用dplyr避免反引号字符

时间:2016-10-20 10:23:03

标签: r dplyr rodbc

如何在没有反引号字符的情况下编写select的参数?我想这样做,以便我可以将变量作为字符串传递给该变量。

df <- dat[["__Table"]] %>% select(`__ID` ) %>% mutate(fk_table = "__Table", val = 1)

将select的参数更改为"__ID"会出现此错误:

Error: All select() inputs must resolve to integer column positions.
The following do not:
*  "__ID"

不幸的是,由于数据是通过ODBC从关系数据库(FileMaker)下载的,并且需要在保留列名的同时将数据写回数据库,因此无法避免列名中的_个字符。

理想情况下,我希望能够做到以下几点:

colName <- "__ID"    
df <- dat[["__Table"]] %>% select(colName) %>% mutate(fk_table = "__Table", val = 1)

我还试过eval(parse())

df <- dat[["__Table"]] %>% select( eval(parse(text="__ID")) ) %>% mutate(fk_table = "__Table", val = 1)

它抛出了这个错误:

Error in parse(text = "__ID") : <text>:1:1: unexpected input
1: _
    ^

顺便说一句,以下内容确实有效,但接下来我又回到原点(仍然带有反引号符号)。

eval(parse(text="`__ID`")

R中有关反引号字符的引用:

1 个答案:

答案 0 :(得分:3)

您可以将as.name()select_()

一起使用
colName <- "__ID"
df <- data.frame(`__ID` = c(1,2,3), `123` = c(4,5,6), check.names = FALSE)
select_(df, as.name(colName))