data.table由包含列名的变量进行子集化

时间:2016-01-20 11:42:28

标签: r data.table subset

我有一个数据表,其列名未提前知道

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方法。

1 个答案:

答案 0 :(得分:1)

我们可以使用get

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