列表的列表到数据框架中,用purrr?

问题描述 投票:0回答:1

假设我们有以下列表结构。

bla <- list(lda = list(list(auc1 = 0.85, auc2 = 0.56), list(auc1 = 0.65, auc2 = 0.72)),
            j48 = list(list(auc1 = 0.99, auc2 = 0.81), list(auc1 = 0.61, auc2 = 0.85)),
            c50 = list(list(auc1 = 0.92, auc2 = 0.59), list(auc1 = 0.68, auc2 = 0.80)))

所需的输出是一个数据框架,结构如下:

    auc1 auc2
lda 0.85 0.56
lda 0.65 0.72
j48 0.99 0.81
j48 0.61 0.85
c50 0.92 0.59
c50 0.68 0.80

我的尝试粘贴在下面。我能够使用调用分别purrr每个内部列表。

bla[[1]] %>%
    map(., function(x) c(auc1 = x[["auc1"]],
                         auc2 = x[["auc2"]])) %>%
    map_dfr(., as.list)

任何想法都是感激的。

r tidyverse purrr
1个回答
3
投票

竟然只用 bind_rows 给你你想要的东西。

dplyr::bind_rows(bla)

这将返回一个 tibble,而 tibbles 没有 rownames。


你可以在基础R中使用 do.call + rbind.

do.call(rbind, unlist(bla, recursive = FALSE))


#     auc1 auc2
#lda1 0.85 0.56
#lda2 0.65 0.72
#j481 0.99 0.81
#j482 0.61 0.85
#c501 0.92 0.59
#c502 0.68 0.8 

2
投票

我们也可以使用 rbindlist

library(data.table)
rbindlist(bla)
© www.soinside.com 2019 - 2024. All rights reserved.