如何在 r 中将列表转换为数据框


在很多情况下,您可能希望将列表转换为 R 中的数据框。本教程介绍了三种不同的方法来执行此操作。

方法 1:基于 R

以下代码片段展示了如何仅使用基本 R 将列表转换为数据框:

 #create list
my_list <- list(letters[1:5], letters[6:10])
my_list

[[1]]
[1] "a" "b" "c" "d" "e"

[[2]]
[1] "f" "g" "h" "i" "j"

#convert list to data frame
data.frame(t(sapply(my_list,c)))

  X1 X2 X3 X4 X5
1 abcde
2 fghij

在此示例中, sapply将列表转换为矩阵,然后data.frame将矩阵转换为数据框。最终结果是一个两行五列的数据框。

方法二:数据表

以下代码片段展示了如何使用data.table库的rbindlist函数将两个嵌套列表的列表转换为两行三列的数据框:

 #load data.table library
library(data.table)

#create list
my_list <- list(a = list(var1 = 1, var2 = 2, var3 = 3),
                b = list(var1 = 4, var2 = 5, var3 = 6))
my_list 

$a
$a$var1
[1] 1

$a$var2
[1] 2

$a$var3
[1] 3

$b
$b$var1
[1] 4

$b$var2
[1] 5

$b$var3
[1] 6

#convert list to data frame
rbindlist(my_list)

   var1 var2 var3
1:1 2 3
2:4 5 6

这会产生一个包含两行三列的数据表。如果你想将此数据表转换为数据框,你可以简单地使用as.data.frame(DT)

如果您正在处理非常大的数据集,则此方法可以比以前的方法更快地将列表转换为数据帧。

方法3:Dplyr

以下代码片段展示了如何使用dplyr库的bind_rows函数将两个嵌套列表的列表转换为具有两行三列的数据框:

 #loadlibrary
library(dplyr)

#create list
my_list <- list(a = list(var1 = 1, var2 = 2, var3 = 3),
                b = list(var1 = 4, var2 = 5, var3 = 6))

my_list

$a
$a$var1
[1] 1

$a$var2
[1] 2

$a$var3
[1] 3


$b
$b$var1
[1] 4

$b$var2
[1] 5

$b$var3
[1] 6

#convert list to data frame
bind_rows(my_list)

# A tibble: 2 x 3
   var1 var2 var3
    
1 1 2 3
2 4 5 6

这会产生一个具有两行三列的数据框。

在处理大型数据集时,此方法的执行速度也往往比基本 R 更快。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注