r - 通过函数将回归对象附加到列表
问题描述
假设我正在尝试自动创建许多回归模型,如下所示:
library(stargazer)
get_main_effect_models <- function(data, outcome_vars){
temp_list = list()
i <- 0
for(dv in outcome_vars) {
temp_model <- lm(as.formula(paste(dv, "~ iv")),
data = data)
temp_list = append(temp_list, temp_model)
}
return(temp_list)
}
dvs <- list('a', 'b')
fake_data = data.frame(a = rnorm(n = 100), b = rnorm(n = 100), iv = rnorm(n = 100))
summary_table = get_main_effect_models(fake_data, dvs)
stargazer(summary_table)
list.of.objects[[i]] 中的错误:下标越界
结果 summary_table 不是对象列表。这是模型的字符表示的大列表。如何将实际回归模型存储在列表中以供观星者使用?
解决方案
一种解决方案是定义您的函数以创建一个回归,然后使用以下命令对其进行迭代lapply
:
get_main_effect_models <- function(outcome_var, data) {
lm(as.formula(paste(outcome_var, "~ iv")), data = data)
}
dvs <- list("a", "b")
fake_data <- data.frame(a = rnorm(n = 100), b = rnorm(n = 100), iv = rnorm(n = 100))
summary_table <- lapply(dvs, get_main_effect_models, data = fake_data)
stargazer(summary_table, type = "text")
#==========================================================
# Dependent variable:
# ----------------------------
# paste(outcome_var, "~ iv")
# (1) (2)
#----------------------------------------------------------
#iv -0.004 0.006
# (0.110) (0.099)
#
#Constant 0.075 -0.081
# (0.106) (0.096)
#
#----------------------------------------------------------
#Observations 100 100
#R2 0.00001 0.00004
#Adjusted R2 -0.010 -0.010
#Residual Std. Error (df = 98) 1.053 0.948
#F Statistic (df = 1; 98) 0.001 0.004
#==========================================================
#Note: *p<0.1; **p<0.05; ***p<0.01
推荐阅读
- node.js - npm install 作为 TeamCity 中的构建步骤
- firefox-addon-webextensions - 获取一个 Firefox 插件来检测和模仿检查 Apple Pay 支持的尝试
- apache-spark - Emr Notebook - 会话未激活
- javascript - 为什么 vue.js 计算得到未定义
- spring - 如果数据不是每分钟轮询一次,SimpleMeterRegistry 会清除数据
- neo4j - 删除最后n个关系neo4j
- java - Android WebView 无法在 Android 4.2.2 上加载 url
- c++ - 每次我需要编译 C++ 程序时,是否需要输入 -std=c++17 (或我想使用的任何标准)?
- android - 当用户在范围内时,有时会调用进入和退出方法
- jenkins - Jenkins 并行管道中的 npm ci