【发布时间】:2014-08-27 16:20:46
【问题描述】:
我想在一个函数中传递一个数据框及其列以由 dplyr 的 mutate 处理。
这是一个例子
multifun <- function(dataf,vari){
mutate(dataf,newvar=vari*2)
}
multifun(mtcars,gear)
这个函数的问题是变量'gear'不是一个可识别的对象。更具体地说,我得到了错误
mutate_impl(.data, named_dots(...), environment()) 对象中的错误 找不到“齿轮”
这是 dplyr 的 mutate 正在寻找相关变量的环境的问题。
我明白了
multifun(mtcars,mtcars$gear)
会给我想要的答案,即
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
但我想看看是否有办法避免在函数调用中引用数据框中使用的每个变量。
我也知道从函数调用中取出 mutate 是没有问题的。也就是说,mutate(mtcars,newvar=gear*2) 完成了这项工作。但是,我试图了解 dplyr 的 mutate 在放置在函数中时如何在不同环境中寻找有问题的变量。
【问题讨论】:
-
看看这里建议的解决方案是否有帮助stackoverflow.com/questions/21815060/…