我正在尝试以编程方式将列名传递给函数,以便可以在dplyr中选择它们。列名会有所不同,因此我尝试使用选择函数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

这使我相信名称是在评估而不是当作字符串使用。我如何解决这个问题而不必重命名表的列?

最佳答案

将名称包装在反引号中即可完成工作。

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

关于r - 如何在不评估的情况下在dplyr select中传递列名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39134602/

10-12 19:37