我想传递一个数据框及其列,以便在函数中由dplyr的mutate处理.
这是一个例子
multifun <- function(dataf,vari){
mutate(dataf,newvar=vari*2)
}
multifun(mtcars,gear)
Run Code Online (Sandbox Code Playgroud)
此功能的问题在于变量"gear"不是可识别的对象.更具体地说,我得到了错误
mutate_impl(.data,named_dots(...),environment())错误找不到对象'gear'
这是dplyr的mutate正在寻找有问题的变量的环境问题.
我明白那个
multifun(mtcars,mtcars$gear)
Run Code Online (Sandbox Code Playgroud)
会给我一个我想要的答案,即
mpg cyl disp hp drat wt qsec vs am gear carb newvar
1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 8
2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 8
3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 8
Run Code Online (Sandbox Code Playgroud)
但我想看看是否有办法避免在函数调用中引用数据框中使用的每个变量.
我也知道从函数调用中取出mutate没有问题.也就是说,mutate(mtcars,newvar=gear*2)这份工作.但是,我试图理解dplyr的mutate在置于函数内时如何在不同的环境中查找有问题的变量.