我有一个因变量名称的字符向量,该向量被重复的回归调用所使用,大致如下:
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)
。
答案 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
})