当索引位置通过data.table中的变量传递时,根据索引位置选择行R

时间:2017-05-28 18:57:50

标签: r variables select data.table

我可以通过将索引位置传递给像这样的变量,在data.table中按索引位置选择一列:

DT <- data.table(a = 1:6, b=10:15, c=20:25, d=30:35, e = 40:45)
i <- 1
j <- 5
DT[, ..i]

但是如何使用data.table语法在一行代码中选择i:i + 2和j列?

您的建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您不想使用with = FALSE参数lukeA's approach,还可以选择其他选项:

DT[, .SD, .SDcols = c(i:(i+2), j)]
#   a  b  c  e
#1: 1 10 20 40
#2: 2 11 21 41
#3: 3 12 22 42
#4: 4 13 23 43
#5: 5 14 24 44
#6: 6 15 25 45

注意(i+2)周围的parantheses,因为冒号运算符优先。

这是对OP代码的修改,而不是所要求的单行代码:

icol <- c(i:(i+2), j); DT[, ..icol]
   a  b  c  e
1: 1 10 20 40
2: 2 11 21 41
3: 3 12 22 42
4: 4 13 23 43
5: 5 14 24 44
6: 6 15 25 45