将元素数量不定的列表转换为数据框。
r programmingserver side programmingprogramming
要在 R 中将元素数量不定的列表转换为数据框,我们可以使用 stringi 包的 stri_list2matrix 函数以及 as.data.frame 函数。
例如,如果我们有一个名为 LIST 的列表,其中包含不同数量的元素,那么我们可以使用下面提到的命令 − 将其转换为数据框
as.data.frame(t(stri_list2matrix(LIST)))
示例 1
以下代码片段创建了一个示例列表 −
List1<- list(x1=rpois(2,5),x2=rpois(1,3),x3=rpois(2,8),x4=rpois(4,5),x5=rpois(2,2), x6=rpois(2,1),x7=rpois(3,8),x8=rpois(2,2),x9=rpois(1,5),x10=rpois(4,5)) List1
创建以下列表 −
$x1 [1] 1 3 $x2 [1] 1 $x3 [1] 8 13 $x4 [1] 1 6 4 3 $x5 [1] 1 1 $x6 [1] 0 1 $x7 [1] 7 14 11 $x8 [1] 2 3 $x9 [1] 6 $x10 [1] 2 6 2 4
要加载 stringi 包并将 List1 转换为上面创建的列表的数据框,请将以下代码添加到上面的代码片段中 −
List1<- list(x1=rpois(2,5),x2=rpois(1,3),x3=rpois(2,8),x4=rpois(4,5),x5=rpois(2,2), x6=rpois(2,1),x7=rpois(3,8),x8=rpois(2,2),x9=rpois(1,5),x10=rpois(4,5)) library(stringi) df1<-as.data.frame(t(stri_list2matrix(List1))) df1
输出
如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −
V1 V2 V3 V4 1 1 3 <NA <NA 2 1 <NA <NA <NA 3 8 13 <NA <NA 4 1 6 4 3 5 1 1 <NA <NA 6 0 1 <NA <NA 7 7 14 11 <NA 8 2 3 <NA <NA 9 6 <NA <NA <NA 10 2 6 2 4
示例 2
以下代码片段创建了一个示例列表 −
List2<- list(rnorm(2),rnorm(1),rnorm(3),rnorm(2),rnorm(2),rnorm(1),rnorm(2),rnorm(3),rnorm(2),rnorm(3)) List2
The following list is created −
[[1]] [1] -0.03506701 -0.55296351 [[2]] [1] 0.005158427 [[3]] [1] -0.7572075 -0.3224273 1.2230982 [[4]] [1] 2.515718 0.459838 [[5]] [1] 0.2281859 1.4827560 [[6]] [1] -1.437357 [[7]] [1] -0.6724493 -0.8615715 [[8]] [1] -0.3267674 0.3821203 1.3682284 [[9]] [1] -1.1927376 0.6963071 [[10]] [1] -1.8503924 -0.8548566 0.3238128
要将 List2 转换为上面创建的列表的数据框,请将以下代码添加到上面的代码片段中 −
List2<- list(rnorm(2),rnorm(1),rnorm(3),rnorm(2),rnorm(2),rnorm(1),rnorm(2),rnorm(3),rnorm(2),rnorm(3)) df2<-as.data.frame(t(stri_list2matrix(List2))) df2
输出
如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −
V1 V2 V3 1 -0.0350670057960313 -0.552963507178783 <NA 2 0.00515842713500514 <NA <NA 3 -0.7572075156728 -0.32242727820248 1.22309822228101 4 2.51571828926956 0.459838038672105 <NA 5 0.228185881424775 1.48275597834426 <NA 6 -1.4373572339596 <NA <NA 7 -0.672449323899707 -0.861571465667793 <NA 8 -0.326767408109411 0.38212030846509 1.36822838416228 9 -1.19273760057282 0.696307135245131 <NA 10 -1.85039242746415 -0.854856579078842 0.323812773976994