使用变量对 data.table 进行子集化(当 varname 与 colname 相同时)

nil*_*ole 5 scope r reference subset data.table

当变量名称与 data.table 中的现有列名称相同时,如何使用变量对 data.table 进行子集化?它适用于get("varname",pos = 1),但是否有更强大/灵活的解决方案?

library(data.table)

my_data_frame <- data.frame(
"V1"=c("A","B","C","A"),
"V2"=c(1, 2, 3, 4),
stringsAsFactors = FALSE        
)

V1 <- "A"

my_data_table <- as.data.table(my_data_frame)

# Can I improve this a bit? I want rows where V1 == "A", but use V1 in the statement 
my_data_table[ my_data_table$V1 == get("V1", pos = 1), ]
Run Code Online (Sandbox Code Playgroud)

重命名V1不是一种选择。

更新:我不认为这是 100% 重复。这个问题的公认答案对于我的问题是不可接受的,因为它使用了get我不想使用的显式,如评论中所述。

Cat*_*ath 3

如果您不介意分两步完成,您可以将其子集超出您的范围(尽管这通常不是您在使用data.table时想要做的事情......):

wh_v1 <- my_data_table[, V1]==V1
my_data_table[wh_v1]
#   V1 V2
#1:  A  1
#2:  A  4
Run Code Online (Sandbox Code Playgroud)