如何在R数据框中把指定列的自定义函数应用到相邻列
实现数据框中自定义函数列的灵活应用
基础R方案:用mapply逐行映射函数
直接利用基础R的mapply函数,它能同时遍历两个向量的对应元素,把B列的每个函数作用到C列的对应数值上:
# 计算结果并新增到数据框 df$result <- mapply(function(func, val) func(val), df$B, df$C)
Tidyverse风格方案:用purrr::map2_dbl
如果习惯tidyverse工具链,purrr包的map2_dbl更简洁,专门处理双输入的映射并返回数值型结果:
library(purrr) # 生成结果列 df$result <- map2_dbl(df$B, df$C, ~ .x(.y))
效果验证
运行代码后查看数据框,result列会自动生成对应结果:
- 前4行是C列数值的平方(对应
TF_01) - 后4行是C列数值的立方(对应
TF_02)
关键说明
- 只要B列存储的是函数对象(而非字符串),不管后续新增什么自定义函数,这两段代码都能直接适配,不需要硬编码修改。
- 要求自定义函数接受单个参数(对应C列的数值输入),如果函数需要多参数,只需调整映射中的参数传递逻辑即可。
内容的提问来源于stack exchange,提问作者DP1113111
相关产品推荐
相关产品推荐

