如何使R中大小相等的列表中的所有元素?
我们知道列表可以包含多个不同类型和大小的元素。例如,包含两个元素的列表,然后一个元素可能包含十五个元素,另一个元素可能包含二十五个元素。在这种情况下,我们可能想在第一个元素中再添加十个元素,以使两个元素的大小相等。可以通过使用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
如果我们不知道最大元素,则可以将max(lengths(“List_name”))替换为apply函数中的最后一个参数30。