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

evg*_*nko 2 r data.table

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

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

DT1 <- DT[A==2, ]
Run Code Online (Sandbox Code Playgroud)

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

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

DT1 <- DT[.SD==2, .SDcols = 1]
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 6

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

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

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

#   A B C
#1: 2 3 4
Run Code Online (Sandbox Code Playgroud)