r:子集中的data.table使用列索引

时间:2016-12-13 02:04:20

标签: r data.table

DT - data.table,列为" A"(列索引== 1)," B"(列索引2)," C"等等

例如,下一个代码生成子集DT1,其中包含A == 2的行:

DT1 <- DT[A==2, ]

但是如何仅使用列索引来创建像DT1这样的子集?

例如,像下一个代码不起作用:

DT1 <- DT[.SD==2, .SDcols = 1]

2 个答案:

答案 0 :(得分:6)

建议不要使用列索引而不是列名,因为它会使您的代码难以理解,并且对于数据可能发生的任何更改都会敏捷。 (例如,请参阅第一个问题in the package FAQ的第一段。)但是,您可以使用列索引进行子集,如下所示:

DT = data.table(A = 1:5, B = 2:6, C = 3:7)

DT[DT[[1]] == 2]

#   A B C
#1: 2 3 4

答案 1 :(得分:1)

我们可以使用maxDamage获取行索引并将其用于.I

的子集
DT

数据

DT[DT[, .I[.SD==2], .SDcols = 1]]
#   A B C
#1: 2 3 4