首页 > 解决方案 > R:如何将嵌套列表“取消嵌套”到 data.frame 中?

问题描述

我有

l1 = list(SeriousDlqin2yrs = list(prediction = "0", prediction_probs = list(`0` = 0.5, `1` = 0.5)))
l2 = list(SeriousDlqin2yrs = list(prediction = "1", prediction_probs = list(`0` = 0.6, `1` = 0.4)))

l12 = list(l1, l2)

data.frame.output = l12 %>% 
  purrr::reduce(dplyr::bind_rows) %>% 
  unnest(cols = c("SeriousDlqin2yrs", "0", "1"))

我期待这样的数据框(以 CSV 格式表示)

SeriousDlqin2yrs$prediction, SeriousDlqin2yrs$prediction$0, SeriousDlqin2yrs$prediction$1
0, 0.5, 0.5
0, 0.6, 0.4

最好我需要一个解决方案,无论列表中的名称如何,它都能正常工作。

标签: r

解决方案


你可以做 :

purrr::map_dfr(l12, unlist)

# A tibble: 2 x 3
#  SeriousDlqin2yrs.prediction SeriousDlqin2yrs.prediction_probs.0 SeriousDlqin2yrs.prediction_probs.1
#  <chr>                       <chr>                               <chr>                              
#1 0                           0.5                                 0.5                                
#2 1                           0.6                                 0.4                   

或在基础 R 中:

as.data.frame(do.call(rbind, lapply(l12, unlist)))

推荐阅读