将具有可变数量元素的列表转换为数据框。
为了在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
创建了以下列表:
[[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
广告