我一直在尝试拟合这样的模型
mtcars %>%
mutate(vs = factor(vs), gear = factor(gear), carb = factor(carb), am = factor(am),
cyl = factor(cyl)) %>% nest_by(vs) %>%
do(fit = lmer(.,formula= mpg ~ cyl + disp + hp + (1 | am) + (1 | vs)))
但不幸的是,我发现我无法访问 cyl 变量,正如我收到的错误中所报告的那样。
Error in eval(predvars, data, env) : object 'cyl' not found
任何人都可以帮我找出问题所在吗?
谢谢
您可能想要拥抱整洁而忘记
do()
。您可能还想删除模型中的 vs
变量,因为您已选择为每个组执行单独的测试。
library(tidyverse)
library(lme4)
library(broom.mixed)
mtcars %>%
mutate(vs = factor(vs), gear = factor(gear), carb = factor(carb), am = factor(am),
cyl = factor(cyl)) %>%
# replacing nest_by with group_by
group_by(vs) %>%
# either using nest_by or group_by, you may want to make sure that the "grouping variable" (vs) is not in the nested table
# using group_modify is a cleaner way to do the job (with tidy)
group_modify(~ broom::tidy(lmer(formula= mpg ~ cyl + disp + hp + (1 | am), data = .x)))
仅供参考,如果您坚持使用大部分代码。您应该让 do() 知道输入是输入数据框
data
的 .
列。
test <- mtcars %>%
mutate(vs = factor(vs), gear = factor(gear), carb = factor(carb), am = factor(am),
cyl = factor(cyl)) %>% nest_by(vs) %>%
do(fit = lmer(.$data,formula= mpg ~ cyl + disp + hp + (1 | am) ))
test$fit