如何在没有评估的情况下在dplyr select中传递列名

时间:2016-08-24 23:44:22

标签: r dplyr

我正在尝试以编程方式将列名传递给函数,以便可以在dplyr中选择它们。列名称会有所不同,所以我尝试使用select函数select_的标准评估版本。列名本身有点搞笑,因为它们包含+-个字符,我认为这会导致问题。下面是一个复制错误的简单示例。

library(tibble)
library(dplyr)
data <- data_frame(target_id = 'xyz',
                   `CH4+Sulfate-1` = 1.2, 
                   `CH4+Sulfate-2` = 2, 
                   `CH4+Sulfate-3` = 3)
columns <- c('CH4+Sulfate-1', 'CH4+Sulfate-2', 'CH4+Sulfate-3')
select_(data, .dots = columns)

我收到以下错误

Error in eval(expr, envir, enclos) : object 'CH4' not found

这使我相信正在评估名称而不是作为字符串。如何在不重命名表的列的情况下解决此问题?

1 个答案:

答案 0 :(得分:2)

在反引号中包装名称可以完成这项任务。

columns <- c('`CH4+Sulfate-1`', '`CH4+Sulfate-2`', '`CH4+Sulfate-3`')