如何在 R 中使用列号向量提取 data.table 的列?


当我们有大量列,但只有少数列对分析有用时,提取这些列就变得很有帮助。

如果我们有一个包含列号的向量,并且想要从 data.table 对象中提取这些列,则可以使用单个方括号进行列子集选择,如下面的示例所示。

示例 1

以下代码段创建 data.table 对象和 Vector1 -

x1<-rnorm(20)
x2<-rnorm(20)
x3<-rnorm(20)
library(data.table)
DT1<-data.table(x1,x2,x3)
DT1

创建以下 data.table -

         x1            x2          x3
1:   0.0009381365   2.38415205  -0.02421045
2:   1.3963732982   0.16346377   1.16961063
3:   1.4794367338  -0.50184674   1.18231067
4:  -1.9793913612  -0.98075371   0.44866840
5:  -0.1299546054  -0.26863505  -0.19340686
6:  -0.2923916937  -0.33906997  -1.77214169
7:   0.1720752818  -2.05508910  -1.05303964
8:   1.5915013897  -0.27355865   1.44198910
9:  -0.2166748864  -1.37819971   0.58816401
10:  0.0715535192   0.84845987  -0.65939784
11: -0.5288076065  -0.04512962   1.27697852
12: -1.3884578057   1.95875321  -0.34228758
13:  1.2654508300  -1.69302356   0.32258719
14: -1.4042497824  -1.38131322  -0.97760370
15:  2.0428827104  -0.68046057  -1.82713480
16: -0.2539994598  -0.57296756   0.55544471
17: -0.7818319402   0.99196597   2.21323456
18:  0.7471519703   3.47030275  -1.63994775
19: -0.3480969922   1.15902926   0.89007240
20:  0.2845669502  -1.41614250  -1.69392436

为了使用 Vector1 提取 DT1 的列,请将以下代码添加到上述代码段中 -

Vector1<-c(1,3)
DT1[,..Vector1]

输出

如果您将上述所有代码段作为单个程序执行,它将生成以下输出 -

          x1          x3
1:   0.0009381365  -0.02421045
2:   1.3963732982   1.16961063
3:   1.4794367338   1.18231067
4:  -1.9793913612   0.44866840
5:  -0.1299546054  -0.19340686
6:  -0.2923916937  -1.77214169
7:   0.1720752818  -1.05303964
8:   1.5915013897   1.44198910
9:  -0.2166748864   0.58816401
10:  0.0715535192  -0.65939784
11: -0.5288076065   1.27697852
12: -1.3884578057  -0.34228758
13:  1.2654508300   0.32258719
14: -1.4042497824  -0.97760370
15:  2.0428827104  -1.82713480
16: -0.2539994598   0.55544471
17: -0.7818319402   2.21323456
18:  0.7471519703  -1.63994775
19: -0.3480969922   0.89007240
20:  0.2845669502  -1.69392436

示例 2

以下代码段创建 data.table 对象和 Vector2 -

y1<-rpois(20,5)
y2<-rpois(20,2)
y3<-rpois(20,1)
y4<-rpois(20,8)
DT2<-data.table(y1,y2,y3,y4)
DT2

创建以下 data.table -

    y1 y2 y3 y4
1:  5  1  1  8
2:  4  2  2  9
3:  7  4  0  6
4:  3  2  2  7
5:  5  2  1  9
6:  8  0  0  6
7:  3  0  2  9
8:  5  3  1 11
9:  5  0  1  9
10: 4  2  1  5
11: 4  2  0  7
12: 8  3  2  8
13: 1  3  4 11
14: 8  1  4  7
15: 4  3  0 10
16: 5  1  2 14
17: 7  5  0  9
18: 4  3  1  8
19: 8  3  1  9
20: 3  2  1  8

为了使用 Vector2 提取 DT2 的列,请将以下代码添加到上述代码段中 -

Vector2<-c(2:4)
DT2[,..Vector2]

输出

如果您将上述所有代码段作为单个程序执行,它将生成以下输出 -

    y2 y3 y4
1:  1  1  8
2:  2  2  9
3:  4  0  6
4:  2  2  7
5:  2  1  9
6:  0  0  6
7:  0  2  9
8:  3  1 11
9:  0  1  9
10: 2  1  5
11: 2  0  7
12: 3  2  8
13: 3  4 11
14: 1  4  7
15: 3  0 10
16: 1  2 14
17: 5  0  9
18: 3  1  8
19: 3  1  9
20: 2  1  8

更新于: 2021年11月5日

622 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告