我想更新一个lm
-模型使用update
-a 内的函数map
-call,但这会引发以下错误:
mtcars %>% group_by(cyl) %>%
nest() %>%
mutate(lm1 = map(data, ~lm(mpg ~ wt, data = .x)),
lm2 = map(lm1, ~update(object = .x, formula = .~ . + hp)))
Error in mutate_impl(.data, dots) :
Evaluation error: cannot coerce class ""lm"" to a data.frame.
谁能帮我解决这个问题吗?我对这个错误感到困惑,因为例如这工作得很好:
mtcars %>% group_by(cyl) %>%
nest() %>%
mutate(lm1 = map(data, ~lm(mpg ~ wt, data = .x)),
lm2 = map_dbl(lm1, ~coefficients(.x)[1]))
这大概和所处的环境有关update
正在评估中。一个简单的解决方法是使用map2
并明确引用相应的数据:
library(tidyverse)
mtcars %>% group_by(cyl) %>%
nest() %>%
mutate(lm1 = map(data, ~lm(mpg ~ wt, data = .x)),
lm2 = map2(lm1, data, ~update(object = .x, formula. = .~ . + hp,
data = .y)))
#> # A tibble: 3 x 4
#> cyl data lm1 lm2
#> <dbl> <list> <list> <list>
#> 1 6 <tibble [7 x 10]> <S3: lm> <S3: lm>
#> 2 4 <tibble [11 x 10]> <S3: lm> <S3: lm>
#> 3 8 <tibble [14 x 10]> <S3: lm> <S3: lm>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)