将元素数量不定的列表转换为数据框。

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

相关文章