R 每个变量中的一个变量(向量)会导致找不到对象

R 每个变量中的一个变量(向量)会导致找不到对象,r,dplyr,R,Dplyr,我有一个名为test的小数据集,我想对向量cm中定义的列执行一些变异操作 安装并加载一些软件包 require(devtools) devtools::install_github("hadley/dplyr") require(dplyr) 首先创建测试数据帧 test <- data.frame(col1 = c(1,1), col2=as.character(c(2,2)), col3=as.character(c(3,3)), stringsAsFactors=F

我有一个名为test的小数据集,我想对向量cm中定义的列执行一些变异操作

安装并加载一些软件包

require(devtools)
devtools::install_github("hadley/dplyr")
require(dplyr)
首先创建测试数据帧

test <- data.frame(col1 = c(1,1),
    col2=as.character(c(2,2)),
    col3=as.character(c(3,3)), stringsAsFactors=F)
但是当我想执行一个操作时,比如说as.numeric,我会得到一个错误

> test %>% mutate_each(funs(as.numeric), one_of(cm))
Error in one_of(vars, ...) : object 'cm' not found
我可以手动粘贴向量

test %>% mutate_each(funs(as.numeric), one_of("col2","col3")) %>% str()
'data.frame':   2 obs. of  3 variables:
 $ col1: num  1 1
 $ col2: num  2 2
 $ col3: num  3 3
这是一个bug还是一个特性?我错过什么了吗?还有其他方法吗

谢谢!
Martin

您需要安装并加载软件包
lazyeval
,然后可以使用以下选项之一:

require(lazyeval)
require(dplyr)
test %>% 
   mutate_each_(funs(as.numeric), interp(~one_of(cm), var = as.name(cm))) %>% 
   str() 
或者,更简短的版本:

test %>% mutate_each_(funs(as.numeric), cm) %>% str()

这两个版本在本例中的作用相同。

以下是有关该主题的更多信息:我可以使用这两个版本。非常感谢。请写下来作为答案,这样我就可以接受了。
require(lazyeval)
require(dplyr)
test %>% 
   mutate_each_(funs(as.numeric), interp(~one_of(cm), var = as.name(cm))) %>% 
   str() 
test %>% mutate_each_(funs(as.numeric), cm) %>% str()