2017-12-01 27 views
1

purrr와 선형 회귀 모델을 업데이트, 그러나 이것은 다음과 같은 오류가 발생합니다 :업데이 트와 나는 <code>map</code> 울어 내부 <code>update</code> α- 함수를 사용하여 <code>lm</code> - 모델을 업데이트 할

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])) 

답변

1

이것은 아마도 update이 평가되는 환경과 관련이 있습니다.

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> 
: 간단한 해결 방법을 사용 map2 명시 해당 데이터를 참조하는