使用 purrr::flatten_dfr 将数据帧列表展平为一个数据帧

Flattening a list of data frames into one data frame with purrr::flatten_dfr

library(tidyverse)

test_list <- list(a = data.frame("fruits" = fruit[1:10],
                                 "letters" = letters[1:10],
                                 "numbers" = rnorm(10)),
                  b = data.frame("fruits" = fruit[1:12],
                                 "letters" = letters[1:12],
                                 "numbers" = rnorm(12)),
                  c = data.frame("fruits" = fruit[1:7],
                                 "letters" = letters[1:7],
                                 "numbers" = rnorm(7)),
                  d = data.frame("fruits" = fruit[1:12],
                                 "letters" = letters[1:12],
                                 "numbers" = rpois(12, 2)))

我有一个列结构相同但每个 df 中行数不同的数据框列表。我只想将它们展平到一个数据框中。我想我可以只使用 purrr::flatten_dfr():

这样的东西

flatteneddf <- flatten_dfr(test_list)

然而,这会引发每个 df 的行长度问题:

Error in bind_rows_(x, .id) : Argument 4 must be length 10, not 12

我知道还有许多其他选项可用于展平 dfs 列表,但我只想知道为什么此选项不起作用。

尝试:

library(tidyverse)

df <- bind_rows(test_list)

我不确定 flatten_dfr 是否有解决此问题的方法。

例如,即使所有数据帧的长度都相同,flatten_dfr 也只是其中一个 return。

如果列名不同但长度相同,flatten_dfr 将绑定名称完全不同的列,因此模仿 bind_cols.

的行为

也许其他人有 flatten_dfr 的特定用例,但我认为您最终会使用的是 bind_rowsbind_cols