首页 > 解决方案 > R命名列表到data.frame的列表

问题描述

我有一个这样的清单

lst <- list(
  r = list(
    c(1:3),
    c(2:4)
  ),
  c = list(
    c(3:5),
    c(4:6)
  )
)

并希望将其转换为这样的 data.frame

desired_output <- bind_rows(
  tibble(name = "r1", value = c(1:3) %>% list),
  tibble(name = "r2", value = c(2:4) %>% list),
  tibble(name = "c1", value = c(3:5) %>% list),
  tibble(name = "c2", value = c(4:6) %>% list)
)

我试过了

lst %>%
  imap(~set_names(.x, paste0(.y, seq_along(.x))))

但后来我不知道如何遵循。

标签: rlistdataframe

解决方案


您可以使用 :

purrr::imap_dfr(lst, ~tibble(name = paste0(.y, seq_along(.x)), value = .x))

#  name  value    
#  <chr> <list>   
#1 r1    <int [3]>
#2 r2    <int [3]>
#3 c1    <int [3]>
#4 c2    <int [3]>

推荐阅读