r - 循环创建新的数据框
问题描述
我有 10 个不同的回归模型,称为“regression1”、“regression2”等,以及它们对应的标准误差,称为“standarderrors1”、“standarderrors2”等。对于每个模型,我都试图创建一个仅包含系数和使用循环使用以下公式的置信区间:
for(i in 1:10){
betas <- regression[[i]]$coefficients
upper_bound <- betas + z_score*standerrors[[i]]
lower_bound <- betas - z_score*standerrors[[i]]
assign(paste0("DF",i), data.frame(betas))
assign(paste0("plot",i))$upper <- upper_bound
assign(paste0("plot",i))$lower <- lower_bound}
这第一部分效果很好,但我正在努力使用循环来创建新的数据框并添加变量,因为我不断收到错误“赋值目标扩展到非语言对象”。
任何有关如何使用循环创建 10 个新数据帧的帮助将不胜感激。
非常感谢!
解决方案
正如 Anoushiravan R 所建议的那样,拥有一些数据将帮助人们帮助您找到最佳解决方案,这可能需要例如数据重塑。此外,正如 Ronak Shah 所建议的那样,使用列表可能会更加整洁和高效。这是一个基于tidy
包中的函数broom
并使用包中的map
函数的解决方案purrr
(我正在加载所有 tidyverse 包)。
library(tidyverse)
library(broom)
models <- list(
m1 <- lm(Petal.Width ~ Sepal.Width, data=iris),
m2 <- lm(Petal.Length ~ Sepal.Length, data=iris)
)
dfs <- map(models, ~tidy(.x)) %>%
map(~mutate(.x, lci = estimate-1.96*std.error, uci = estimate+1.96*std.error))
现在您有一个dfs
包含每个模型的数据框的列表。
推荐阅读
- python - 基于一个字段的查询集差异
- google-app-maker - 当allowNull = true并且字段为布尔值时,如何隐藏appmaker单选组中的空项目选项?
- linux - 如何在 Ubuntu 上为 Android Studio 配置 KVM?
- java - 什么 Sonarqube 扫描器负责收集 Java 的代码重复分析?
- ios - Google PlacePicker 未显示位置建议
- php - 我的 ajax 代码没有向服务器发送数据并得到响应
- python - 将我的实时输出打印到 txt 文件不起作用 python
- java - Avro 序列化异常 - java.time.Instant 不能转换为 java.lang.Long
- sql - DISTINCT AND COUNT(*)=1 不适用于 SQL
- android - TextInputLayout 中的 EditText 没有正确的样式