假设我有一个包含命名元素的列表。元素是 tibbles。 我想将列表转换为一个小标题。
purrr 的
list_rbind
可以工作,但有一个严重的缺点(至少对于我的目的而言),它会放弃
元素是 0 行 tibble(尽管它是命名元素)。
library(tidyverse)
li <- list("a"=tibble(x=1), "b"=tibble(x=2), "c"=tibble(x=NULL))
li
#> $a
#> # A tibble: 1 × 1
#> x
#> <dbl>
#> 1 1
#>
#> $b
#> # A tibble: 1 × 1
#> x
#> <dbl>
#> 1 2
#>
#> $c
#> # A tibble: 0 × 0
li %>% purrr::list_rbind(., names_to="element_names")
#> # A tibble: 2 × 2
#> element_names x
#> <chr> <dbl>
#> 1 a 1
#> 2 b 2
我正在寻找的结果是
#> element_names x
#> <chr> <dbl>
#> 1 a 1
#> 2 b 2
#> 3 c NA (or NULL?)
有什么帮助吗?非常感谢。
add_row()
map()
library(purrr)
library(dplyr)
li <- list("a"=tibble(x=1), "b"=tibble(x=2), "c"=tibble(x=NULL))
li <- map(li, \(x){
if(nrow(x) == 0){
add_row(x)
} else x
})
li %>% purrr::list_rbind(., names_to="element_names")
#> # A tibble: 3 × 2
#> element_names x
#> <chr> <dbl>
#> 1 a 1
#> 2 b 2
#> 3 c NA
创建于 2024-01-23,使用 reprex v2.0.2