数据帧R具有不同长度和类型的子列表列表

时间:2016-07-27 14:15:21

标签: r

我有一个列表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

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