选择data.table中的所有行,其中变量是值为TRUE的列名

选择data.table中的所有行,其中变量是值为TRUE的列名,r,dataframe,select,data.table,subset,R,Dataframe,Select,Data.table,Subset,我有一个列名作为字符串存储在变量中,我需要选择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[variabl

我有一个列名作为字符串存储在变量中,我需要选择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
>变量DT DT2 DT2
>DT3 DT3

可以通过两种方式完成。使用
get
返回值

DT3 <- DT[get(variable)]
注意,我们不需要
==TRUE
,因为“V3”已经是一个逻辑列

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

identical(DT2, DT3)
#[1] TRUE