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列表,但我只想知道为什么此选项不起作用。
答案 0 :(得分:1)
尝试:
library(tidyverse)
df <- bind_rows(test_list)
我不确定您是否可以使用flatten_dfr
解决此问题。
例如,即使所有数据帧的长度相同,flatten_dfr
也会返回其中一个。
如果列名不同且长度相同,则flatten_dfr
将绑定名称完全不同的列,因此模仿了bind_cols
的行为。
也许其他人有一个flatten_dfr
的特定用例,但我认为最终您将使用bind_rows
或bind_cols
。