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