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



我可以通过在 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?

您的建议将不胜感激。

如果你不想使用 lukeA 的方法使用 with = FALSE 参数,你还有其他选择:

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)周围的参数,因为冒号运算符优先。

这是对 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

最新更新