У меня есть
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
Желательно, чтобы мне понадобилось решение, которое работает независимо от имен в списке.
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
Ты можешь сделать :
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)))
Вышеуказанное верно, но использование {rlist} сохраняет правильность типа
library(rlist)
purrr::map_dfr(l12, rlist::list.flatten)
Похожие вопросы
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.