0

我正在拟合多个空模型(例如null)和一个替代模型(full)同时使用purrrand furrr。我试图从这些拟合模型中提取一些值并进一步处理它们。通过这样做,我还想将计算结果分配给full全局环境中的对象。

由于每个模型在我的实际计算中都会消耗大量内存,(1)我只想为 而full不是nulls 进行这样的分配,并且(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
      )
    )
  )()
4

0 回答 0