如何在 R 中使列表中的所有元素大小相等?
我们知道一个列表可以有不同类型以及不同大小的多个元素。例如,一个列表包含两个元素,那么一个元素可能包含 15 个元素,而另一个可能包含 25 个元素。在这种情况下,我们可能希望使用十个以上的元素填充第一个元素,这样两个元素的大小就相等了。这可以使用 lapply 函数来完成,如下面的示例所示。
考虑以下列表 −
示例
set.seed(101) x1<-rnorm(10) x2<-rpois(20,5) x3<-rexp(15,1.5) x4<-sample(1:10,30,replace=TRUE) x5<-sample(0:1,30,replace=TRUE) x6<-rpois(25,8) x7<-rnorm(20,4,2) List<-list(x1,x2,x3,x4,x5,x6,x7) List
输出
[[1]] [1] -0.3260365 0.5524619 -0.6749438 0.2143595 0.3107692 1.1739663 [7] 0.6187899 -0.1127343 0.9170283 -0.2232594 [[2]] [1] 6 9 3 6 8 7 2 4 4 6 4 4 3 3 5 8 3 7 1 8 [[3]] [1] 0.6663708 0.6833283 0.8470505 0.9572860 0.3622581 1.4228982 0.2396990 [8] 0.3124750 0.7762488 0.0249382 0.2544077 0.1177009 0.4194529 0.4133933 [15] 0.1465812 [[4]] [1] 10 9 8 1 4 9 10 3 10 6 9 9 3 1 3 7 10 7 8 8 10 1 10 4 5 [26] 2 1 7 10 8 [[5]] [1] 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 [[6]] [1] 8 6 10 8 8 9 4 9 7 6 6 8 8 8 12 8 9 12 6 13 6 11 5 8 9 [[7]] [1] 0.3621310 1.9251108 4.6049845 1.4441077 4.2766781 3.8980318 7.7042951 [8] 6.2233505 2.9772494 2.9122378 0.5421454 4.9414991 4.0107742 6.6960916 [15] 5.4481934 7.1050983 6.6509397 3.9314698 3.2779732 2.5596692
通过引入 NA 来使所有列表元素具有相等的大小 −
示例
lapply(List,'length <-',30)
输出
[[1]] [1] -0.3260365 0.5524619 -0.6749438 0.2143595 0.3107692 1.1739663 [7] 0.6187899 -0.1127343 0.9170283 -0.2232594 NA NA [13] NA NA NA NA NA NA [19] NA NA NA NA NA NA [25] NA NA NA NA NA NA [[2]] [1] 6 9 3 6 8 7 2 4 4 6 4 4 3 3 5 8 3 7 1 8 NA NA NA NA NA [26] NA NA NA NA NA [[3]] [1] 0.6663708 0.6833283 0.8470505 0.9572860 0.3622581 1.4228982 0.2396990 [8] 0.3124750 0.7762488 0.0249382 0.2544077 0.1177009 0.4194529 0.4133933 [15] 0.1465812 NA NA NA NA NA NA [22] NA NA NA NA NA NA NA [29] NA NA [[4]] [1] 1 3 10 9 3 10 4 2 1 6 9 2 2 1 6 6 2 9 10 5 2 9 2 5 3 [26] 9 10 7 4 1 [[5]] [1] 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 1 1 0 1 0 1 [[6]] [1] 6 11 5 8 9 3 7 5 8 9 13 5 6 8 10 8 11 14 9 11 8 6 18 6 12 [26] NA NA NA NA NA [[7]] [1] 0.5421454 4.9414991 4.0107742 6.6960916 5.4481934 7.1050983 6.6509397 [8] 3.9314698 3.2779732 2.5596692 4.5640299 2.4189487 3.1101909 6.7299863 [15] 4.9949087 2.3712070 4.5361317 2.8155834 8.2669727 6.3454973 NA [22] NA NA NA NA NA NA NA [29] NA NA
如果我们不知道最大元素,则可以在 apply 函数中用 max(lengths(“List_name”)) 替换最后一个参数 30。
广告