如何在 R 中将 data.table 对象转换为矩阵?
data.table 对象在 R 中非常类似于数据框,因此,将 data.table 对象转换为矩阵并不是一项困难的工作。我们只需要使用 as.matrix 函数并将 data.table 对象存储到一个属于矩阵的新对象中,否则 R 将无法将 data.object 转换为矩阵。例如,如果我们有一个 data.table 对象 DT,则要将其转换为矩阵,我们应该使用以下示例代码:
DT_matrix<-as.matrix(DT)
加载 data.table 包:
library(data.table)
创建一个 data.table 对象:
示例
x1<-rnorm(20,1,0.04) x2<-rnorm(20,5,1.2) x3<-runif(20,5,10) x4<-runif(20,1,5) DT1<-data.table(x1,x2,x3,x4) DT1
输出
x1 x2 x3 x4 1: 0.9785610 7.345365 8.079572 4.289080 2: 0.9787770 6.684993 6.842196 3.420399 3: 0.9936527 5.076511 6.584490 4.339317 4: 0.9585088 6.348905 5.256956 1.041050 5: 1.0172288 6.076759 6.456343 3.964968 6: 1.0199971 6.384019 6.444665 2.477480 7: 1.0027680 5.189908 6.352739 3.358625 8: 1.0013410 7.480771 6.236253 3.704360 9: 0.9638484 3.173219 6.768095 2.710411 10: 0.9771605 4.072879 5.269356 3.689747 11: 0.9768464 3.898211 8.212824 1.230352 12: 1.0322361 4.964122 8.062670 2.333302 13: 0.9730514 2.746493 7.991256 1.319675 14: 1.0157617 4.032643 7.324038 3.883257 15: 1.0167210 6.994750 5.123840 3.157113 16: 0.9526550 5.292459 8.401666 2.362798 17: 1.0022340 4.753125 6.175266 3.900407 18: 1.0456185 6.001135 8.018412 3.324448 19: 1.1422387 5.121760 5.340800 2.348761 20: 0.9269784 5.893736 5.754917 1.940769
is.matrix(DT1_matrix)
[1] TRUE
让我们看另一个例子:
示例
y1<-rpois(20,2) y2<-rpois(20,5) y3<-rpois(20,8) y4<-rpois(20,10) y5<-sample(0:9,20,replace=TRUE) DT2<-data.table(y1,y2,y3,y4,y5) DT2
输出
y1 y2 y3 y4 y5 1: 2 5 12 12 7 2: 2 7 9 8 1 3: 2 5 3 9 2 4: 0 0 10 12 9 5: 2 3 5 8 8 6: 4 7 6 8 9 7: 2 7 8 9 0 8: 0 7 8 11 1 9: 3 6 7 8 2 10: 0 3 8 9 1 11: 2 7 9 9 2 12: 3 4 8 7 7 13: 0 1 10 14 8 14: 1 6 7 5 9 15: 3 3 12 14 6 16: 0 4 8 8 4 17: 1 7 9 13 2 18: 5 1 14 11 7 19: 1 4 14 9 6 20: 3 5 8 10 1
将 data.table 对象转换为矩阵对象:
示例
DT2_matrix<-as.matrix(DT2) DT2_matrix
输出
y1 y2 y3 y4 y5 [1,] 2 5 12 12 7 [2,] 2 7 9 8 1 [3,] 2 5 3 9 2 [4,] 0 0 10 12 9 [5,] 2 3 5 8 8 [6,] 4 7 6 8 9 [7,] 2 7 8 9 0 [8,] 0 7 8 11 1 [9,] 3 6 7 8 2 [10,] 0 3 8 9 1 [11,] 2 7 9 9 2 [12,] 3 4 8 7 7 [13,] 0 1 10 14 8 [14,] 1 6 7 5 9 [15,] 3 3 12 14 6 [16,] 0 4 8 8 4 [17,] 1 7 9 13 2 [18,] 5 1 14 11 7 [19,] 1 4 14 9 6 [20,] 3 5 8 10 1
is.matrix(DT2_matrix)
[1] TRUE
广告