Допустим, у меня есть таблица данных
library(data.table)
DT <- data.table(x=c(1,1,0,0),y=c(0,1,2,3))
column_name <- "x"
x y
1: 1 0
2: 1 1
3: 0 2
4: 0 3
И я хочу получить доступ ко всем строкам, где x = 1, но используя имя_столбца.
Желаемый результат должен вести себя следующим образом :
DT[x==1,]
x y
1: 1 0
2: 1 1
, но с заменой x
на column_name
во входных данных.
Обратите внимание, что эта проблема похожа, но не совсем такая же, как Select подмножество столбцов в data.table R , и решение там (с использованием with = FALSE) здесь не работает.
Вот все, что я пробовал. Ни один из них не работает.
DT[column_name ==1,]
DT[.column_name ==1,]
DT[.(column_name) ==1,]
DT[..column_name ==1,]
DT[."column_name" ==1,]
DT[,column_name ==1,]
DT[,column_name ==1,with=TRUE]
DT[,column_name ==1,with=FALSE]
DT[,.column_name ==1,with=TRUE]
DT[,.column_name ==1,with=FALSE]
DT[,..column_name ==1,with=TRUE]
DT[,..column_name ==1,with=FALSE]
DT[,."column_name" ==1,with=TRUE]
DT[,.column_name ==1,with=FALSE]
DT[column_name ==1,with=TRUE]
DT[column_name ==1,with=FALSE]
DT[[column_name==1,]]
subset(DT,column_name==1)
У меня также есть options(datatable.WhenJisSymbolThenCallingScope=TRUE)
включено
Очевидно, мне не хватает какого-то лексического трюка. Я потратил несколько часов, просматривая виньетки и ТАК вопросы, но безрезультатно.