У меня есть

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
1
xiaodai 6 Авг 2020 в 04:34

3 ответа

Лучший ответ

Мы также могли бы использовать as.data.frame, и это получит правильный тип

out <- map_dfr(l12, as.data.frame)
str(out)
#'data.frame':  2 obs. of  3 variables:
# $ SeriousDlqin2yrs.prediction        : chr  "0" "1"
# $ SeriousDlqin2yrs.prediction_probs.0: num  0.5 0.6
# $ SeriousDlqin2yrs.prediction_probs.1: num  0.5 0.4

Или в base R

do.call(rbind, lapply(l12, as.data.frame))
#  SeriousDlqin2yrs.prediction SeriousDlqin2yrs.prediction_probs.0 SeriousDlqin2yrs.prediction_probs.1
#1                           0                                 0.5                                 0.5
#2                           1                                 0.6                                 0.4
2
akrun 6 Авг 2020 в 06:50

Ты можешь сделать :

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)))
4
Ronak Shah 6 Авг 2020 в 01:36

Вышеуказанное верно, но использование {rlist} сохраняет правильность типа

library(rlist)

purrr::map_dfr(l12, rlist::list.flatten)
0
xiaodai 6 Авг 2020 в 02:18
63275653