función de mapa en lenguaje tidyverse

Sep 25 2020

Tengo la siguiente formula

#Regression(Y1 - VTV)----
m1_vtv<-formula(vtv~retailsales)
m2_vtv<-formula(vtv~retailsales+cpi)
m3_vtv<-formula(vtv~retailsales+cpi+tmf)

#Regression(Y2 - VUG)----
m1_vug<-formula(vug~retailsales)
m2_vug<-formula(vug~retailsales+cpi)
m3_vug<-formula(vug~retailsales+cpi+tmf)

y los he agregado a una lista llamada regression_list

regression_list<-c(m1_vtv,m2_vtv,m3_vtv,m1_vug,m2_vug,m3_vug)

Estoy tratando de mirar () todos los modelos en regression_list juntos. Individualmente funciona:

tidy(model1) %>% as_tibble()
glance(model1)

Sin embargo, cuando intenté esto

regression_list %>% 
  map(~lm(.x, data = df_final)) %>%
   map(~as_tibble(.x, data = df_final)) %>% 
  map(~glance(.x, data = df_final))

Recibo un mensaje de error:

Error en as.data.frame.default (valor, stringsAsFactors = FALSE): no se puede forzar la clase '"lm"' a un data.frame

Buscando una forma de encajar esto en la función de mapa para ejecutar todas las fórmulas en regression_list

Respuestas

1 RonakShah Sep 25 2020 at 14:15

Como dice el mensaje de error, está intentando convertir el lmobjeto a tibble. Tampoco necesita múltiples map, ya que puede hacer esto en la misma mapfunción. Intentar :

library(purrr)
library(broom)

result <- regression_list %>% map(~glance(lm(.x, data = df_final)))

Si desea el resulten un marco de datos, puede usar map_dfen lugar de map.