在purrr :: map调用中查看基础对象

时间:2019-07-18 14:48:36

标签: r tidyverse purrr

我有一个因变量名称的字符向量,该向量被重复的回归调用所使用,大致如下:

library(purrr)
c('hp', 'wt', 'disp') %>% 
    paste('mpg ~', .) %>% 
    map(as.formula) %>% 
    map(lm, data = mtcars)

要转换为公式的序列来自于侦听者的答案here。但是,使用map作为对多个变量重复调用的一种方法,会屏蔽摘要输出中的变量名:

#> [[1]]
#> 
#> Call:
#> .f(formula = .x[[i]], data = ..1)       <- This is what I'm talking about
#> 
#> Coefficients:
#> (Intercept)           hp  
#>    30.09886     -0.06823
#> ...

当我使用~语法时,它会更清楚一点,因为它显示了数据帧名称:

    ...
    map(., ~lm(.x, data = mtcars))

#> [[1]]
#> 
#> Call:
#> lm(formula = .x, data = mtcars)         <- A little better
#> ...

是否可以在.x调用中公开基础map变量的内容,以便摘要输出更加透明?例如,我希望类似于典型的lm呼叫输出lm(formulua = mpg ~ hp, data = mtcars)

1 个答案:

答案 0 :(得分:1)

call中更新lm是一种选择

library(purrr)
library(dplyr)
map(c('hp', 'wt', 'disp'), ~ reformulate(.x, response = "mpg") %>% {
                             fml <- .
                             lm1 <- lm(.,  data = mtcars)
                             lm1$call <- fml
                             lm1
        })