我正在拟合多个空模型(例如null
)和一个替代模型(full
)同时使用purrr
and furrr
。我试图从这些拟合模型中提取一些值并进一步处理它们。通过这样做,我还想将计算结果分配给full
全局环境中的对象。
由于每个模型在我的实际计算中都会消耗大量内存,(1)我只想为 而full
不是null
s 进行这样的分配,并且(2)我想保持工作流使用|>
以避免创建中间对象。那么,我应该如何将只有一个拟合模型的结果分配给 .GlobalEnv 中的对象,从而保持管道工作流程?
library(tidyverse)
c(
"Days + (1 + Days | Subject)",
"(1 + Days | Subject)"
) |>
set_names(
nm = c(
"full",
"null"
)
) |>
map(
~ paste("Reaction ~ ", .x)
) |>
map(
as.formula
) |>
furrr::future_map(
.options = furrr::furrr_options(seed = 1L),
~ lme4::lmer(
formula = .x,
lme4::sleepstudy
)
) |> ### Here, I want to assign `full` to an object in .Globalenv
map(fixef) |>
map(as_tibble)
### Assignment method I was trying to insert before `map(fixef)`
(
\(fit)
walk( #or `map_at(`
.x = names(fit),
#.at = 1,
.f = ~ assign(
x = .x,
value = fit[[.x]],
envir = .GlobalEnv
)
)
)()