如何在R中将data.table行提取为向量?
data.table对象类似于数据框架对象,但是几乎没有什么可以专门应用于data.table的对象,因为data.table包函数仅是为data.table对象定义的。如果要提取data.table行作为向量,则可以将as.vector函数与as.matrix一起使用,以便as.vector可以正确读取该行。
加载data.table包:
> library(data.table)
请看以下向量并创建一个data.table对象:
示例
> x1<-sample(LETTERS[1:3],20,replace=TRUE) > x2<-sample(LETTERS[1:4],20,replace=TRUE) > x3<-sample(LETTERS[1:5],20,replace=TRUE) > x4<-sample(LETTERS[2:5],20,replace=TRUE) > x5<-sample(LETTERS[3:5],20,replace=TRUE) > DT1<-data.table(x1,x2,x3,x4,x5) > DT1
输出结果
x1 x2 x3 x4 x5 1: B C C D E 2: B C D B E 3: B C C B E 4: C D A C E 5: C C D E D 6: A D D E E 7: A C A D E 8: B B E D E 9: C D B D C 10: A B E E E 11: C A D B C 12: C D A B E 13: C A E C C 14: A A A B C 15: C C E D D 16: B B C D D 17: A A D D E 18: B C D C E 19: C B D D E 20: C B C C D
将行提取为向量:
示例
> Row1<-as.vector(as.matrix(DT1[1])) > Row1 [1] "B" "C" "C" "D" "E" > is.vector(Row1) [1] TRUE > Row2<-as.vector(as.matrix(DT1[2])) > Row2 [1] "B" "C" "D" "B" "E" > is.vector(Row2) [1] TRUE > Row5<-as.vector(as.matrix(DT1[5])) > Row5 [1] "C" "C" "D" "E" "D" > is.vector(Row5) [1] TRUE > Row10<-as.vector(as.matrix(DT1[10])) > Row10 [1] "A" "B" "E" "E" "E" > is.vector(Row10) [1] TRUE > is.vector(Row10) [1] TRUE > Row18<-as.vector(as.matrix(DT1[18])) > Row18 [1] "B" "C" "D" "C" "E" > is.vector(Row18) [1] TRUE
让我们看另一个例子:
示例
> v1<-rnorm(20,1,2.3) > v2<-rnorm(20,1,0.5) > v3<-rnorm(20,1,0.275) > v4<-rnorm(20,1,1.05) > v5<-rnorm(20,1,0.80) > v6<-rnorm(20,1,0.007) > DT2<-data.table(v1,v2,v3,v4,v5) > DT2
输出结果
v1 v2 v3 v4 v5 1: 3.0343715 1.50341176 0.7697336 1.1133711891 -0.6121658 2: -0.9852696 1.67132579 0.6735064 -0.4264159308 2.0648977 3: -0.1772886 0.92605020 1.6350086 -0.1306917763 0.2362759 4: -1.5987827 1.21532168 0.8452163 1.1970737419 1.3881985 5: 6.6638926 0.99153886 0.9312445 0.6709141801 0.1946506 6: -1.1456574 1.17003856 0.9168460 0.2278830477 0.2643338 7: 0.9558536 0.66266842 0.8268585 -0.0526142041 1.8055215 8: 0.3400104 1.26874416 0.5101432 -0.0008413192 1.1666347 9: 1.0587648 -0.02557012 1.2874365 2.6673114134 1.3532956 10: -1.4587479 2.04442403 0.6002114 0.6081632615 3.0083355 11: 5.5237850 0.89874276 1.3020908 2.0082148902 1.3465480 12: 2.2144533 1.13244217 1.0143068 -0.7514250499 1.4106594 13: -0.4355997 0.99994424 1.3501380 2.2319042291 0.9450547 14: 1.2946799 0.26674188 0.7165047 0.5596915326 0.2925462 15: 0.2576993 0.68885846 1.4244761 2.2760543161 -0.4573567 16: 1.2538944 1.82497873 0.6419318 0.0770117052 1.7090877 17: -1.3401457 0.58804734 1.1919157 2.9846478595 0.2938903 18: 4.6633082 0.50940850 1.5545408 1.5738985335 0.3506627 19: -2.0482789 0.82047093 1.1950368 -0.9818883889 0.6690500 20: -4.4615852 1.23548986 0.6505639 1.1960534288 2.3088988
示例
> Row1<-as.vector(as.matrix(DT2[1])) > Row1 [1] 3.0343715 1.5034118 0.7697336 1.1133712 -0.6121658 > is.vector(Row1) [1] TRUE > Row12<-as.vector(as.matrix(DT2[12])) > Row12 [1] 2.214453 1.132442 1.014307 -0.751425 1.410659 > is.vector(Row12) [1] TRUE > Row20<-as.vector(as.matrix(DT2[20])) > Row20 [1] -4.4615852 1.2354899 0.6505639 1.1960534 2.3088988 > is.vector(Row20) [1] TRUE > Row15<-as.vector(as.matrix(DT2[15])) > Row15 [1] 0.2576993 0.6888585 1.4244761 2.2760543 -0.4573567 > is.vector(Row15) [1] TRUE > Row19<-as.vector(as.matrix(DT2[19])) > Row19 [1] -2.0482789 0.8204709 1.1950368 -0.9818884 0.6690500 > is.vector(Row19) [1] TRUE