r - 列表列表列表到带有 purrr 的数据框中
问题描述
假设我们有以下列表结构:
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
我的尝试粘贴在下面。我可以使用调用分别对每个内部列表发出呼噜声:
bla[[1]] %>%
map(., function(x) c(auc1 = x[["auc1"]],
auc2 = x[["auc2"]])) %>%
map_dfr(., as.list)
任何想法都值得赞赏。
解决方案
令人惊讶的是,只有使用bind_rows
才能为您提供所需的东西。
dplyr::bind_rows(bla)
这将返回一个 tibble 并且 tibbles 没有行名。
您可以使用do.call
+在基础 R 中执行此操作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
推荐阅读
- firefox - Firefox 67 browser.downloads.download(...) cookie 数据丢失
- database - 如何使用 Cakephp3 以一种好的方式配置树?
- mysql - mysql 5.7游标不返回任何值
- c# - ApiController 正在为 CSV 字符串返回双转义字符串
- python - 即使在我用空格替换了数据集中的所有数字之后,我仍然遇到这个错误,称为“float”对象不可迭代
- r - 另一个向量的历史高点向量
- java - com.algorithmia.APIException:308 意外的 API 响应
- html - DOM完全渲染后如何显示按钮
- php - 不在本地主机中打开文件夹
- date-fns - date-fns:parseISO(string) 和 new Date(string) 之间的区别?