data.table 相当于 dplyr 的 bang bang (!!)

Mwa*_*avu 0 r dplyr data.table

假设我有这个DTID下面的:

library(data.table)
DT <- data.table(
  ID = c("b","b","b","a","a","c"),
  a = 1:6,
  b = 7:12,
  c = 13:18
)

ID <- "b"
Run Code Online (Sandbox Code Playgroud)
DT
#>    ID a  b  c
#> 1:  b 1  7 13
#> 2:  b 2  8 14
#> 3:  b 3  9 15
#> 4:  a 4 10 16
#> 5:  a 5 11 17
#> 6:  c 6 12 18

Run Code Online (Sandbox Code Playgroud)

是否有{data.table}相当于 的{dplyr}

DT |> dplyr::filter(ID == !!ID)
#>    ID a b  c
#> 1:  b 1 7 13
#> 2:  b 2 8 14
#> 3:  b 3 9 15
Run Code Online (Sandbox Code Playgroud)

假设我不更改变量的名称。

Vit*_*B16 6

是的,只需将变量包装在as.name()

DT[ID == as.name(ID)]

#    ID a b  c
# 1:  b 1 7 13
# 2:  b 2 8 14
# 3:  b 3 9 15
Run Code Online (Sandbox Code Playgroud)