如何使用purrr批量为多个回归模型的参与样本添加标记
实现方法
首先加载需要的依赖包:
library(dplyr) library(purrr)
先构造你示例中的测试数据集:
df <- mtcars %>% mutate(disp = replace(hp, c(2, 3), NA)) %>% mutate(wt = replace(wt, c(3, 4, 5), NA))
接下来把你需要批量跑的回归公式整理为命名列表,列表的名称就是你要生成的样本标记列的列名:
formula_list <- list( samp1 = mpg ~ disp, samp2 = mpg ~ wt ) # 后续新增模型直接在该列表中追加即可,比如增加samp3 = mpg ~ drat
最后用purrr批量生成标记列并绑定到原数据集:
df <- formula_list %>% # 批量拟合回归模型 map(~ lm(.x, data = df)) %>% # 为每个模型生成对应的样本标记列 map(function(mod) { res <- rep(TRUE, nrow(df)) na_rows <- na.action(mod) # 兼容无缺失值的模型场景,避免报错 if (!is.null(na_rows)) res[na_rows] <- FALSE res }) %>% # 将所有标记列合并到原数据集 bind_cols(df, .)
你可以运行以下代码验证结果:
head(select(df, mpg, disp, wt, samp1, samp2))
内容的提问来源于stack exchange,提问作者nicholas
相关产品推荐
相关产品推荐

