如何在 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 更快。