就像标题一样。
有一个简单的例子。
如果我想分别探索vs
(因变量(和mpg
、cyl
和disp
(自变量(之间的关系,我可以这样编码:
library(tidyverse)
mtcars <- as_tibble(mtcars) %>%
mutate(mpg10 = mpg*10, cyl10 = cyl*10, disp10 = disp*10)
x = c('mpg', 'cyl', 'disp')
# y ~ x style
models <- map(x, ~ lm(substitute(vs ~ i, list(i = as.name(.))), data = mtcars))
现在我想做得更多。如果模型中有mpg
,也应该放mpg10
。如果模型中的cyl
,也应该加cyl10
,等等。比如:
# y ~ x1 + x2 style
model1 <- lm(vs ~ mpg + mpg10, data = mtcars)
model2 <- lm(vs ~ cyl + cyl10, data = mtcars)
model3 <- lm(vs ~ disp + disp10, data = mtcars)
我不知道如何使用map()
函数或for loop
来完成此操作。
如有任何帮助,我们将不胜感激!
您可以使用grep
查找具有相同名称的所有列名,并使用reformulate
创建要在lm
中使用的公式。
purrr::map(x, ~lm(reformulate(grep(.x, names(mtcars), value = TRUE),
'vs'), data = mtcars))