我希望执行一个线性模型,这样对于我的 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))
})
关于r - 将线性模型应用于指定变量时使用映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55248824/