我对R和dplyr库比较新。如何让函数使用变异列的名称作为函数中的参数传递?
例如,我希望“test”作为变异列的名称,但我得到“y”。我究竟做错了什么?谢谢
library(dplyr)
d <- data.frame(alpha=1:3, beta=4:6)
d
compare_status<-function(x,y){
x %>% mutate(y=ifelse(alpha ==2,"G2","0"))
}
compare_status(d,test)
答案 0 :(得分:2)
我们可以使用devel版本dplyr
语法(即将发布0.6.0
)
compare_status<-function(x,y){
y <- quo_name(enquo(y))
x %>%
mutate(!!y := ifelse(alpha ==2,"G2","0"))
}
compare_status(d,test)
# alpha beta test
#1 1 4 0
#2 2 5 G2
#3 3 6 0
enquo
获取输入参数并转换为quosure
,然后将其转换为quo_name
的字符串,并使用!!
或UQ
不加引号进行评估作为assign(:=
)