我有一个列表list_of_lists
。
每个sub_list理论上可以有不同的长度,例如:
list_of_lists[[1]]
$id = 1
$variable1 = "8"
$variable2 = 8 12.2
和...
list_of_lists[[2]]
$id = 2
$variable1 = "4"
$variable2 = 2 2.2 12.1 200.1
我想将list_of_lists
转换为长数据帧。看过this SO post:
b = as.data.frame(matrix(unlist(list_of_lists), nrow=length(unlist(list_of_lists[1]))))
并试过这个:
long_df = ldply(list_of_lists, as.data.frame)
两者都没有像我期望的那样有效。
我希望有一个很长的df,如:
id variable1 variable2
1 "8" 8
1 "8" 12.2
2 "4" 2
2 "4" 2.2
2 "4" 12.1
2 "4" 200.1
答案 0 :(得分:0)
将每个子列表单独转换为数据框,然后rbind
假设所有子列表具有相同的字段:
do.call(rbind, lapply(list_of_lists, data.frame))
# id var1 var2
# 1 1 8 8.0
# 2 1 8 12.2
# 3 2 4 2.0
# 4 2 4 2.2
# 5 2 4 12.1
# 6 2 4 200.1