R 将线性模型应用于指定变量时使用映射

R 将线性模型应用于指定变量时使用映射,r,R,我希望执行一个线性模型,这样对于我的n协变量,它运行n次y~x1,…,y~xn。我用for循环完成了它,所以我很想让它与映射一起工作 例如,map函数有一个例子,它为变量cyl的每个因子水平运行mpg~wt的线性模型。然后给出三个线性模型-一个用于cyl的每个因子水平: library(purrr) mtcars %>% split(.$cyl) %>% map(~ lm(mpg ~ wt, data = .x)) 如果相反,我希望使用map函数为某些变量运行一个线性模型

我希望执行一个线性模型,这样对于我的
n
协变量,它运行
n
y~x1
,…,
y~xn
。我用for循环完成了它,所以我很想让它与映射一起工作

例如,
map
函数有一个例子,它为变量
cyl
的每个因子水平运行
mpg~wt
的线性模型。然后给出三个线性模型-一个用于
cyl
的每个因子水平:

library(purrr)

mtcars %>%
  split(.$cyl) %>%
  map(~ lm(mpg ~ wt, data = .x))
如果相反,我希望使用
map
函数为某些变量运行一个线性模型(例如,假设我有一个带有“cyl”和“wt”的向量,我希望运行
lm(mpg~cyl)
,然后运行
lm(mpg~wt)


谢谢。

我们可以使用
map2
传递与
列表长度相同的
向量

library(tidyverse)
mtcars %>%
  group_split(cyl) %>%
  map2(., c("cyl", "wt", "drat"), ~ lm(paste0("mpg ~ ", .y), data = .x))
或者使用
重新格式化

mtcars %>%
   group_split(cyl) %>%
   map2(., c("cyl", "wt", "drat"), ~ lm(reformulate(.y, "mpg"), data = .x))

如果目的是为每个
列表
元素设置多个
lm

mtcars %>%
    group_split(cyl) %>% 
    map(~  {
          data = .x
           map(c("cyl", "wt"), ~ lm(reformulate(.x, "mpg"), data = data))
        })

知道如何在输出中保留拆分/组的名称吗?我知道有这样的方法:但感觉很复杂?特别是当有多个组时。@JasonAizkalns
split
应该保持
mtcars%>%split(.$cyl)
分组中没有要执行的参数it@JasonAizkalns否则,您需要使用
keep=TRUE
mtcars%%>%+组分割(cyl,keep=TRUE)%%>%map(~.x$cyl)