我希望执行一个线性模型,这样对于我的n
协变量,它运行n
次为y ~ x1
,...,y ~ xn
。我已经用for循环完成了它,所以我很想让它与映射一起工作。
例如,map
函数有一个例子,它为变量mpg ~ wt
的每个因子级别运行cyl
的线性模型。然后给出三个线性模型 - 一个用于cyl
的每个因子水平:
library(purrr)
mtcars %>%
split(.$cyl) %>%
map(~ lm(mpg ~ wt, data = .x))
如果相反,我希望使用map
函数为某些变量运行线性模型(例如,假设我有一个带有“cyl”和“wt”的向量,我希望运行lm(mpg ~ cyl)
然后运行lm(mpg ~ wt)
。
谢谢。
我们可以使用map2
传递一个vector
,其长度与list
的长度相同
library(tidyverse)
mtcars %>%
group_split(cyl) %>%
map2(., c("cyl", "wt", "drat"), ~ lm(paste0("mpg ~ ", .y), data = .x))
或使用reformulate
mtcars %>%
group_split(cyl) %>%
map2(., c("cyl", "wt", "drat"), ~ lm(reformulate(.y, "mpg"), data = .x))
如果意图是每个lm
元素有多个list
mtcars %>%
group_split(cyl) %>%
map(~ {
data = .x
map(c("cyl", "wt"), ~ lm(reformulate(.x, "mpg"), data = data))
})