感觉你这可以分成两个问题,一个是引号和反引号的使用,引号是用于字符串的,引起来的部分就是字符内容,反引号是用于调用非常规名字的 R object 的
# character
x <- c('a', 'b')
str(x)
#> chr [1:2] "a" "b"
# R object with special names
`1` <- 2
print(`1`)
#> [1] 2
`name with space` <- 'aaa'
print(`name with space`)
#> [1] "aaa"
print(`+`)
#> function (e1, e2) .Primitive("+")
第二个问题就是 data.table 的参数 j
,作为字符串输入的话,和 data.frame 取某几列一样
df <- data.table(x = 1:2, y = 3:4, z = 5:6)
df[ , c('x', 'z')]
#> x z
#> 1: 1 5
#> 2: 2 6
df1 <- data.frame(x = 1:2, y = 3:4, z = 5:6)
df[ , c('x', 'z')]
#> x z
#> 1: 1 5
#> 2: 2 6
而作为变量名输入的话,本小白猜测是类似with
函数来处理了
When with=TRUE (default), j is evaluated within the frame of the data.table
df[ , c(x, z)]
#> [1] 1 2 5 6
with(df, c(x, z))
#> [1] 1 2 5 6