使用 dplyr 避免反引号字符
Avoiding backtick characters with dplyr
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
中关于反引号字符的引用:
- Removing backticks in R output
- R encoding ASCII backtick
您可以将 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))
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
中关于反引号字符的引用:
- Removing backticks in R output
- R encoding ASCII backtick
您可以将 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))