在获得了数据框架的经验之后,人们通常会转向data.table对象,因为与数据框架相比,使用data.table对象更容易。我们还需要创建一个data.table对象的子集,并且可以使用方括号轻松实现。例如,如果我们有一个名为DT的data.table对象,其中包含10列,并且我们想要创建1到8列的子集,则可以使用DT [,-c(9,10),with = FALSE]创建该子集。
library(data.table) x1<−rnorm(20,1,0.5) x2<−rnorm(20,1,0.45) x3<−rpois(20,10) x4<−rpois(20,5) x5<−rpois(20,8) x6<−rexp(20,1.15) x7<−sample(0:9,20,replace=TRUE) x8<−sample(41:49,20,replace=TRUE) DT<−data.table(x1,x2,x3,x4,x5,x6,x7,x8) DT
输出结果
x1 x2 x3 x4 x5 x6 x7 x8 1: 0.3816564 0.8224154 11 5 9 0.02823792 6 44 2: 1.2498355 1.3669585 9 5 15 1.41967863 8 45 3: 1.7661182 1.1508072 14 8 3 0.99296213 7 44 4: 0.4679560 1.9738294 9 6 8 1.30810100 0 46 5: 1.2634799 1.7418108 8 2 10 1.57067044 0 44 6: 0.5271280 0.7788231 15 4 9 0.85467421 3 42 7: 1.1978085 1.1891952 10 4 9 0.76186350 9 44 8: 0.5582059 1.2431360 12 4 7 1.60622936 0 43 9: 0.5003223 0.9426929 11 8 13 1.86129287 2 46 10: 0.5168766 0.8995718 8 3 7 0.66378569 6 48 11: 1.2805334 1.0410280 9 2 7 0.78355511 0 48 12: 1.5555755 1.2342420 10 7 2 3.99523338 6 45 13: 1.0936011 2.1838511 12 10 7 0.31020687 5 48 14: 0.8434001 0.6962775 19 5 8 1.12643977 8 41 15: 0.4765863 1.1157518 8 6 9 0.72010177 4 45 16: 0.9317724 0.8178368 6 6 7 0.55444159 4 48 17: 1.5397574 1.2234017 11 4 6 0.29338357 3 41 18: 0.7530927 1.4972635 8 8 12 0.27459776 9 43 19: 1.3672898 1.6516958 14 6 7 2.99439984 0 48 20: 0.3179253 0.5976030 7 5 7 0.55743554 8 44
子集除1和2以外的所有列-
DT[,−c(1,2),with=FALSE]
输出结果
x3 x4 x5 x6 x7 x8 1: 11 5 9 0.02823792 6 44 2: 9 5 15 1.41967863 8 45 3: 14 8 3 0.99296213 7 44 4: 9 6 8 1.30810100 0 46 5: 8 2 10 1.57067044 0 44 6: 15 4 9 0.85467421 3 42 7: 10 4 9 0.76186350 9 44 8: 12 4 7 1.60622936 0 43 9: 11 8 13 1.86129287 2 46 10: 8 3 7 0.66378569 6 48 11: 9 2 7 0.78355511 0 48 12: 10 7 2 3.99523338 6 45 13: 12 10 7 0.31020687 5 48 14: 19 5 8 1.12643977 8 41 15: 8 6 9 0.72010177 4 45 16: 6 6 7 0.55444159 4 48 17: 11 4 6 0.29338357 3 41 18: 8 8 12 0.27459776 9 43 19: 14 6 7 2.99439984 0 48 20: 7 5 7 0.55743554 8 44
子集除1和8以外的所有列-
DT[,−c(1,8),with=FALSE]
输出结果
x2 x3 x4 x5 x6 x7 1: 0.8224154 11 5 9 0.02823792 6 2: 1.3669585 9 5 15 1.41967863 8 3: 1.1508072 14 8 3 0.99296213 7 4: 1.9738294 9 6 8 1.30810100 0 5: 1.7418108 8 2 10 1.57067044 0 6: 0.7788231 15 4 9 0.85467421 3 7: 1.1891952 10 4 9 0.76186350 9 8: 1.2431360 12 4 7 1.60622936 0 9: 0.9426929 11 8 13 1.86129287 2 10: 0.8995718 8 3 7 0.66378569 6 11: 1.0410280 9 2 7 0.78355511 0 12: 1.2342420 10 7 2 3.99523338 6 13: 2.1838511 12 10 7 0.31020687 5 14: 0.6962775 19 5 8 1.12643977 8 15: 1.1157518 8 6 9 0.72010177 4 16: 0.8178368 6 6 7 0.55444159 4 17: 1.2234017 11 4 6 0.29338357 3 18: 1.4972635 8 8 12 0.27459776 9 19: 1.6516958 14 6 7 2.99439984 0 20: 0.5976030 7 5 7 0.55743554 8
子集除5到8之外的所有列-
DT[,−c(5:8),with=FALSE]
输出结果
x1 x2 x3 x4 1: 0.3816564 0.8224154 11 5 2: 1.2498355 1.3669585 9 5 3: 1.7661182 1.1508072 14 8 4: 0.4679560 1.9738294 9 6 5: 1.2634799 1.7418108 8 2 6: 0.5271280 0.7788231 15 4 7: 1.1978085 1.1891952 10 4 8: 0.5582059 1.2431360 12 4 9: 0.5003223 0.9426929 11 8 10: 0.5168766 0.8995718 8 3 11: 1.2805334 1.0410280 9 2 12: 1.5555755 1.2342420 10 7 13: 1.0936011 2.1838511 12 10 14: 0.8434001 0.6962775 19 5 15: 0.4765863 1.1157518 8 6 16: 0.9317724 0.8178368 6 6 17: 1.5397574 1.2234017 11 4 18: 0.7530927 1.4972635 8 8 19: 1.3672898 1.6516958 14 6 20: 0.3179253 0.5976030 7 5
子集除2、4、7和8之外的所有列-
DT[,−c(2,4,7,8),with=FALSE]
输出结果
x1 x3 x5 x6 1: 0.3816564 11 9 0.02823792 2: 1.2498355 9 15 1.41967863 3: 1.7661182 14 3 0.99296213 4: 0.4679560 9 8 1.30810100 5: 1.2634799 8 10 1.57067044 6: 0.5271280 15 9 0.85467421 7: 1.1978085 10 9 0.76186350 8: 0.5582059 12 7 1.60622936 9: 0.5003223 11 13 1.86129287 10: 0.5168766 8 7 0.66378569 11: 1.2805334 9 7 0.78355511 12: 1.5555755 10 2 3.99523338 13: 1.0936011 12 7 0.31020687 14: 0.8434001 19 8 1.12643977 15: 0.4765863 8 9 0.72010177 16: 0.9317724 6 7 0.55444159 17: 1.5397574 11 6 0.29338357 18: 0.7530927 8 12 0.27459776 19: 1.3672898 14 7 2.99439984 20: 0.3179253 7 7 0.55743554