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

问题描述 投票:4回答:1

我希望执行一个线性模型,这样对于我的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)

谢谢。

r
1个回答
2
投票

我们可以使用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))
        })
© www.soinside.com 2019 - 2024. All rights reserved.