【问题标题】:Updating a linear regression model with update and purrr使用 update 和 purrr 更新线性回归模型
【发布时间】:2018-05-15 08:39:57
【问题描述】:

我想在map-调用中使用update-函数更新lm-model,但这会引发以下错误:

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

【问题讨论】:

    标签: r lm purrr


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2019-10-09
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      • 2021-01-11
      • 1970-01-01
      • 2016-11-04
      相关资源
      最近更新 更多