如何使用映射函数与r中的多个自变量循环



就像标题一样。

有一个简单的例子。

如果我想分别探索vs(因变量(和mpgcyldisp(自变量(之间的关系,我可以这样编码:

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))

最新更新