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

时间:2018-04-30 14:32:21

标签: 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[variable==TRUE]    
> DT3

1 个答案:

答案 0 :(得分:1)

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

DT3 <- DT[get(variable)]

或将其转换为符号(as.name)和eval uate

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

identical(DT2, DT3)
#[1] TRUE

请注意,我们不需要== TRUE,因为'V3'已经是逻辑列