从双嵌套列表中提取估计值

Extracting estimates from double nested list

我正在尝试从如下所示的双嵌套列表中提取 CIs(置信区间):

我可以使用以下非常丑陋的代码来做到这一点:

library(dplyr)
library(reshape2)
cis <- as.data.frame(L1.estimates[["CIs"]])
cil <- cis[1,]
cil <- melt(cil)
cil <- cil %>% dplyr::select(-c(1)) %>% dplyr::rename(conf.low = 1)
cih <- cis[2,]
cih <- melt(cih)
cih <- cih %>% dplyr::select(-c(1)) %>% dplyr::rename(conf.high = 1)
CIs <- cbind(cil,cih)

但是,它会产生以下警告:“没有 id 变量;将所有变量用作度量变量”。做我所做的更清洁的方法是什么?显然有更好的方法。

Reduce 可用于折叠列表。

l <- list(
  L1 = list(
    Xs = 1:5,
    coefs = 1:5,
    CI = list(1:2, 3:4, 5:6)
    )
)

Reduce(rbind.data.frame, l$L1$CI) |> setNames(c("low", "high"))
#>   low high
#> 1   1    2
#> 2   3    4
#> 3   5    6

或者,使用 purrr,也可以做

transpose(l$L1$CI, c("low", "high")) %>% map_dfr(unlist)

一个purrr方法:

library(purrr)
library(dplyr)
l %>% 
  map( ~.x[contains("CI", vars = names(.x))]) %>% 
  bind_rows() %>% 
  tidyr::separate(col = "CI", into = c("low", "high"), sep = ":")