【问题标题】:Flattening a list of data frames into one data frame with purrr::flatten_dfr使用 purrr::flatten_dfr 将数据帧列表展平为一个数据帧
【发布时间】:2019-04-20 23:51:09
【问题描述】:
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 &lt;- flatten_dfr(test_list)

但是这会引发每个 df 的行长度问题:

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

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

【问题讨论】:

    标签: r list purrr flatten


    【解决方案1】:

    试试:

    library(tidyverse)
    
    df <- bind_rows(test_list)
    

    我不确定您是否可以使用flatten_dfr 解决此问题。

    例如,即使所有数据帧的长度相同,flatten_dfr 也只会返回其中一个。

    如果列名不同且长度相同,flatten_dfr 将绑定具有完全不同名称的列,从而模仿bind_cols 的行为。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多