如何在R函数中用mutate()创建值为指定变量名的动态变量?
解决方案
要让Indicator变量取传入参数var_1的变量名,你可以用rlang包的as_label()函数替代原来的label(),它能把enquo()捕获的表达式转换成变量名字符串。
修改后的函数如下:
library(dplyr) library(rlang) fn <- function(data, var_1) { var_1 <- enquo(var_1) prop <- data %>% mutate(Indicator = as_label(var_1)) return(prop) }
测试示例
用mtcars数据集测试:
test_result <- fn(mtcars, mpg) head(test_result$Indicator)
输出会是重复的"mpg",也就是传入的变量名。
如果你的R环境里rlang版本稍旧,也可以用quo_name(var_1),效果一致,但as_label()是更推荐的新版本用法。
内容的提问来源于stack exchange,提问作者user24831703
相关产品推荐
相关产品推荐

