說我有這個DT和ID以下:
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"
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
是否有{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
假設我不更改變數的名稱。
uj5u.com熱心網友回復:
是的,只需將變數包裝在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
uj5u.com熱心網友回復:
我喜歡VitaminB16的回答在作業i=(以及j=)的部分data.table::[。但是,我相信從呼叫環境參考物件的規范回應是..-operator,這里討論:https : //rdatatable.gitlab.io/data.table/articles/datatable-intro.html
不幸的是,它不適用于i=,
DT[ID == ..ID,]
# Error in eval(stub[[3L]], x, enclos) : object '..ID' not found
所以必須放在一個.SD. (我相信這在.SD's 中有效,i=因為它最初是在's 中評估DT的j=......也許令人費解。)
DT[, .SD[ID == ..ID,] ]
# ID a b c
# <char> <int> <int> <int>
# 1: b 1 7 13
# 2: b 2 8 14
# 3: b 3 9 15
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/369326.html
下一篇:當列以NA結尾時插入NA值
