避免与dplyr反引号字符(Avoiding backtick characters with dp

2019-09-28 00:53发布

我怎么能写的参数select不反引号字符? 我想这样做,这样我可以在这个说法从一个变量作为字符串传递。

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

改变选择的说法"__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

  • 中的R输出中去除反引号
  • 什么是反引号中的R吗?
  • ř编码ASCII反引号

Answer 1:

您可以使用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))


文章来源: Avoiding backtick characters with dplyr
标签: r dplyr rodbc