replace .x with column name in `tidy` object after running `lm()` using `purrr::map`

purrr
broom

#1

Hi,

I want to run lm() for every column of a dataset with one of the column is the dependent variable using purrr:map() function. Below, are the codes using the mtcars dataset. The results are almost perfect except for this - I want to replace .x in the results with the variable that i run lm() for.

Any help is greatly appreciated.

Best
Kamarul

library(tidyverse)
library(broom)
mod3 <- map(mtcars, ~ lm(mpg ~ .x, data = mtcars)) %>%
  map(~tidy(.x))
#> Warning in summary.lm(x): essentially perfect fit: summary may be
#> unreliable
mod3
#> $mpg
#> # A tibble: 2 x 5
#>   term         estimate std.error statistic   p.value
#>   <chr>           <dbl>     <dbl>     <dbl>     <dbl>
#> 1 (Intercept) -5.02e-15  9.94e-16  -5.06e 0 0.0000198
#> 2 .x           1.00e+ 0  4.74e-17   2.11e16 0        
#> 
#> $cyl
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic  p.value
#>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
#> 1 (Intercept)    37.9      2.07      18.3  8.37e-18
#> 2 .x             -2.88     0.322     -8.92 6.11e-10
#> 
#> $disp
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic  p.value
#>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
#> 1 (Intercept)  29.6      1.23        24.1  3.58e-21
#> 2 .x           -0.0412   0.00471     -8.75 9.38e-10
#> 
#> $hp
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic  p.value
#>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
#> 1 (Intercept)  30.1       1.63       18.4  6.64e-18
#> 2 .x           -0.0682    0.0101     -6.74 1.79e- 7
#> 
#> $drat
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic   p.value
#>   <chr>          <dbl>     <dbl>     <dbl>     <dbl>
#> 1 (Intercept)    -7.52      5.48     -1.37 0.180    
#> 2 .x              7.68      1.51      5.10 0.0000178
#> 
#> $wt
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic  p.value
#>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
#> 1 (Intercept)    37.3      1.88      19.9  8.24e-19
#> 2 .x             -5.34     0.559     -9.56 1.29e-10
#> 
#> $qsec
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic p.value
#>   <chr>          <dbl>     <dbl>     <dbl>   <dbl>
#> 1 (Intercept)    -5.11    10.0      -0.510  0.614 
#> 2 .x              1.41     0.559     2.53   0.0171
#> 
#> $vs
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic  p.value
#>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
#> 1 (Intercept)    16.6       1.08     15.4  8.85e-16
#> 2 .x              7.94      1.63      4.86 3.42e- 5
#> 
#> $am
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic  p.value
#>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
#> 1 (Intercept)    17.1       1.12     15.2  1.13e-15
#> 2 .x              7.24      1.76      4.11 2.85e- 4
#> 
#> $gear
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic p.value
#>   <chr>          <dbl>     <dbl>     <dbl>   <dbl>
#> 1 (Intercept)     5.62      4.92      1.14 0.262  
#> 2 .x              3.92      1.31      3.00 0.00540
#> 
#> $carb
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic  p.value
#>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
#> 1 (Intercept)    25.9      1.84      14.1  9.22e-15
#> 2 .x             -2.06     0.569     -3.62 1.08e- 3

Created on 2019-02-06 by the reprex package (v0.2.1)