从列表列表制作数据框,但每个元素都是一列

QPa*_*aps 4 r list nested-lists dataframe

我想从列表列表中创建一个数据框,其中生成的数据框为每个元素有一列,而行是单独的。这很难解释,所以我会尝试制作一个例子来处理。

可以说我的清单如下:

myList <- list(
  list(L=c(1,2,3),a=c(1,2,3),b=c(1,2,3)),
  list(L=c(4,5,6),a=c(4,5,6),b=c(4,5,6)),
  list(L=c(7,8,9),a=c(7,8,9),b=c(7,8,9)))
Run Code Online (Sandbox Code Playgroud)

结果数据框是这样的:

df <- data.frame(ind = c(1,2,3),
  L.1 = c(1,4,7),L.2 = c(2,5,8), L.3 = c(3,6,9),
  a.1 = c(1,4,7),a.2 = c(2,5,8), a.3 = c(3,6,9),
  b.1 = c(1,4,7),b.2 = c(2,5,8), b.3 = c(3,6,9))
Run Code Online (Sandbox Code Playgroud)

我试过使用

data.frame(do.call(rbind, myList))
Run Code Online (Sandbox Code Playgroud)

df <- bind_rows(myList, .id="column_label")

但这些会为每个人产生三行,而不是所需的输出。

我也尝试使用: df <- bind_cols(myList) 但这会将列划分为每个列表。

知道如何解决这个问题吗?

谢谢,伊芙

Sot*_*tos 6

如果名称总是一一匹配,你可以简单地做,

do.call(rbind, lapply(myList, unlist))
#     L1 L2 L3 a1 a2 a3 b1 b2 b3
#[1,]  1  2  3  1  2  3  1  2  3
#[2,]  4  5  6  4  5  6  4  5  6
#[3,]  7  8  9  7  8  9  7  8  9
Run Code Online (Sandbox Code Playgroud)