【问题标题】:data.table subsetting by variable containing a column name [duplicate]包含列名的变量的data.table子集[重复]
【发布时间】:2016-01-20 11:42:27
【问题描述】:

我有一个预先不知道列名的数据表

set.seed(1)
titles <- rep(letters[sample.int(3,replace = T)],2)
dt <- data.table( x = c(1, 1, 3, 1, 3, 1), y = c(1, 2, 1, 2, 1, 2) )
dt = dcast(dt, x+y ~ titles, fill=0, value.var = 'x')
> dt
   x y a b
1: 1 1 1 0
2: 1 2 1 2
3: 3 1 0 2

我希望删除最后一列为 0 的行,但“子集”不起作用。为什么?

dt <- subset( dt, last(titles) > 0 )

我最好使用 data.table 方法。

【问题讨论】:

  • 我们可以试试dt[b!=0]
  • @akrun 他不知道是b。我想一种方法是dt[dt[[last(titles)]] &gt; 0],但这是一个很好的问题,说明这样做的惯用方法是什么。
  • 然后dt[get(tail(names(dt),1))!=0]dt[get(tail(titles,1))!=0]
  • dt[eval(as.name(last(titles))) &gt; 0]
  • 我猜this 有点相关

标签: r data.table subset


【解决方案1】:

我们可以使用get

 dt[get(last(titles))!=0]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-26
    • 2022-01-15
    • 2016-12-16
    • 2019-03-23
    • 2014-03-06
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    相关资源
    最近更新 更多