在dplyr中使用eval(parse())构造

时间:2019-04-10 09:17:09

标签: r

我有一个数据框(df),其中有两列名为:Peter_Smith和Peter_Dow

df <- as_data_frame(matrix(ncol=2, nrow=2))
namesDF <- c("Peter_Smith", "Peter_Dow" )
names(df) <- namesDF

例如,我想使用以下内容获取第一列:

library('dplyr')
target <- "Smith"
df1 <- select(df, eval(parse(text=paste0('Peter_', target)))

并获取下一个错误:

Error in eval(parse(text = paste0("Peter_", target))) : 
object 'Peter_Smith' not found

为什么?

我使用R版本3.5.3(2019-03-11)-“伟大的真理”

2 个答案:

答案 0 :(得分:0)

尝试res

答案 1 :(得分:0)

target <- "Smith"
target <- enquo(target)
df1 <- select(df, paste0('Peter_', !!target))

希望有帮助。