从双嵌套列表中提取估计值
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 = ":")
我正在尝试从如下所示的双嵌套列表中提取 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 = ":")