【发布时间】:2019-04-10 19:46:52
【问题描述】:
我使用 dplyr “do” 功能为多个组运行 glm 模型。现在我想将 DescTool 包中的 PseudoR2() 函数应用于结果列表列中的每个模型。但是,我得到“评估错误:对象'。'未找到。”显然是因为 PseudoR2() 想要使用用于生成模型的数据,但是模型有 data = .,在环境中不存在。
一般的问题是,如何将需要访问原始数据的函数应用到使用'.'生成的模型上?
下面是一个可重现的例子:
require(dplyr)
require(DescTools)
dta = tibble(id = c(rep("A", 4), rep("B", 4)),
y = rnorm(8),
x = rnorm(8))
dta %>% group_by(id) %>%
do(fit = glm(y ~ x, data = .)) %>%
mutate(R2 = PseudoR2(fit))
【问题讨论】:
-
试试
dta %>% group_by(id) %>% nest %>% mutate(data = map(data, ~ .x %>% mutate(R2 = glm(y ~ x) %>% PseudoR2))) %>% unnest