Выберите все строки в data.table, где переменная - это имя столбца, значения которого TRUE - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть имя столбца, хранящееся в переменной в виде строки, и мне нужно выбрать все строки в data.table, которые имеют в столбце, имя которого я сохранил в переменной, некоторые конкретные значения. Для кода ниже мне нужно, чтобы DT3 был таким же, как DT2.

> variable<-"V3"
> DT<-data.table(V1=c(1,5,9),V2=c("a","b","c"),V3=c(TRUE,FALSE,TRUE))   
> DT2<-DT[V3==TRUE]   
> DT2  
> DT3<-DT[variable==TRUE]    
> DT3

1 Ответ

0 голосов
/ 30 апреля 2018

Это можно сделать несколькими способами. Либо используйте get, чтобы вернуть значение

DT3 <- DT[get(variable)]

Или преобразовать его в символ (as.name) и eval uate

DT3 <- DT[DT[,eval(as.name(variable))]]

identical(DT2, DT3)
#[1] TRUE

Обратите внимание, что нам не нужно == TRUE, поскольку 'V3' уже является логическим столбцом

...