【问题标题】:r data.table row subset with column name as a variabler data.table 以列名作为变量的行子集
【发布时间】:2021-10-26 12:18:12
【问题描述】:

我们先在r中创建一个简单的data.table。

dt=data.table(x1=1:5,
           x2=11:21)

如果我们想用行的条件对data.table进行子集化,我们可以简单地做,例如

dt[x1==1]

现在我的问题是:如果列名是变量怎么办?我试过了:

var="x1"
dt[eval(var)==1,]

但是这段代码不起作用。

eval 适用于以下示例:如果我们想按名称(即变量)获取某些列。

dt[x1==1,eval(var),with=F]

【问题讨论】:

标签: r dataframe data.table


【解决方案1】:

.SD 的选项

 DT[DT[, .SD[[var]] ==1]]
   x1 x2
1:  1 11

给出与接受的答案相同的输出

 DT[get(var)==1,]
   x1 x2
1:  1 11

【讨论】:

    【解决方案2】:

    我猜你在找get:

    library(data.table)
    
    DT <- data.table(x1=1:11, x2=11:21)
    var <- "x1"
    DT[get(var)==1,]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      相关资源
      最近更新 更多