使用purrr将回归模型右侧变量映射到回归函数的实现方法
purrr批量生成回归模型实现方法
首先将所有回归方程的右侧变量项整理为命名向量,名称对应你需要的模型前缀,再通过purrr::map批量拟合模型即可。
基础实现代码
# 加载purrr包 library(purrr) # 1. 定义所有回归的右侧变量,命名为你需要的模型前缀 rhs_terms <- c( m.1.1 = "cyl", m.1.2 = "cyl + disp" ) # 2. 批量拟合线性模型,返回命名列表 reg_list <- map(rhs_terms, function(x) { lm(formula = as.formula(paste0("mpg ~ ", x)), data = mtcars) }) # 3. 调整列表元素名称为要求的*_reg格式 names(reg_list) <- paste0(names(reg_list), "_reg")
运行后得到的reg_list就是目标模型列表,可直接通过reg_list$m.1.1_reg、reg_list$m.1.2_reg调用对应模型,和单独赋值的效果完全一致。
如果需要将模型直接写入全局环境作为独立变量,额外运行一行代码即可:
list2env(reg_list, envir = .GlobalEnv)
大量递进变量的高效生成方案
如果你的模型是按顺序依次加入变量的层级模型,可通过purrr::accumulate自动生成所有右侧变量项,无需手动拼接:
# 按加入顺序排列的所有变量 var_sequence <- c("cyl", "disp", "hp", "drat", "wt", "qsec") # 自动生成累加的右侧变量字符串,同时按规则命名 rhs_terms <- set_names( accumulate(var_sequence, ~ paste(.x, .y, sep = " + ")), paste0("m.1.", seq_along(var_sequence)) )
内容的提问来源于stack exchange,提问作者nicholas
相关产品推荐
相关产品推荐

