gpt4 book ai didi

dictionary - future_map 中不能使用 tidy 函数?

转载 作者:行者123 更新时间:2023-12-05 04:44:11 34 4
gpt4 key购买 nike

我在下面有 R 代码。对于最后一行,当我使用 map() 函数时,它运行良好。但是,当我更改为 future_map() 函数时,我收到以下错误消息:

“错误:mutate()model 有问题。我 model = future_map(splits, fun1)。x 没有适用于“tidy”的适用方法应用于“c('lmerMod', 'merMod')”类的对象

知道哪里出了问题吗?谢谢。

fun1 <- function(data) {
data %>% analysis %>%
lmer(val ~ period + (1 | id), data = .) %>% tidy
}

plan(multisession)

raw %>%
nest(data = -c(analyte, var)) %>%
mutate(boot = future_map(data, ~ bootstraps(
data = .x,
times = 5,
strata = id
),
.progress = T)) %>%
unnest(boot) %>%
mutate(model =future_map(splits, fun1))

最佳答案

我的一个脚本遇到了完全相同的问题。为了得到future_maptidy 正常工作,我需要明确引用 broom包(即我需要使用 broom::tidy 代替 tidy )。在您的示例中,您正试图从混合模型中提取汇总统计信息,因此如果我们修改 fun1,代码应该可以正常运行而不会出错。如下:

fun1 <- function(data) {
data %>% analysis %>%
lmer(val ~ period + (1 | id), data = .) %>% broom.mixed::tidy
}

更新(2021 年 12 月 13 日):

经过更多阅读,我现在明白了原帖中描述的问题是由于 broom.mixed 引起的。包未附加在评估 future 的 R 环境中。而不是修改 fun1 (这是解决问题的一种非常 hacky 的方法),我们应该使用 .options future_map 的参数保证broom.mixed在未来的环境中附加(并且所有相关功能都可用)。以下代码应该可以正常运行:

fun1 <- function(data) {
data %>%
analysis %>%
lmer(val ~ period + (1 | id), data = .) %>%
tidy
}

plan(multisession)

raw %>%
nest(data = -c(analyte, var)) %>%
mutate(boot = future_map(data, ~ bootstraps(data = .x,
times = 5,
strata = id),
.progress = T)) %>%
unnest(boot) %>%
mutate(model = future_map(splits,
fun1,
.options = furrr_options(packages = "broom.mixed")))

我从中得出的结论是,始终使用 .options 列出我们需要使用的包(作为字符向量)可能是一个好习惯。 future_map 的参数, 只是为了安全起见。希望对您有所帮助!

关于dictionary - future_map 中不能使用 tidy 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69427140/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com