【问题标题】:Select all rows of a data.table where a variable is the column name which values are TRUE选择 data.table 的所有行,其中变量是列名,其值为 TRUE
【发布时间】:2018-10-10 16:13:35
【问题描述】:

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

【问题讨论】:

    标签: r dataframe select data.table subset


    【解决方案1】:

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

    DT3 <- DT[get(variable)]
    

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

    DT3 <- DT[DT[,eval(as.name(variable))]]
    
    identical(DT2, DT3)
    #[1] TRUE
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 2017-12-09
      • 1970-01-01
      • 2023-03-28
      • 2019-11-16
      • 2016-06-15
      • 1970-01-01
      相关资源
      最近更新 更多