r - 使用 for 循环创建 beta 值向量
问题描述
我是一名 R 新手,目前正在尝试创建 3 个由多元回归模型的 beta 值组成的向量。我有三个预测变量 A ge、Fitness and sleep和一个因变量RT。
对于每个参与者,我都有一个在不同时间点进行 10 次测量的 Excel 表。对于每个参与者 1 到 20,我想将多元回归的 beta 保存在各自的向量 Age_betas、Fitness_betas 或 Sleep_betas 中。
如果我只为一个参与者尝试我的模型,例如
model<-lm(scale(RT)~scale(Age)+scale(Fitness)+scale(Sleep), data=subset(Subjects1_5, Subject==1))
它工作得很好。有人可以帮我为什么我的循环不起作用吗?
Fun<-function()
{
Age_betas<-c()
Fitness_betas<-c()
Sleep_betas<-c()
for (counter in 1:5)
{model<-lm(scale(RT)~scale(Age)+scale(Fitness)+scale(Sleep), data=subset(Subjects1_5, Dummy==1 & Subject==i))
Age_betas <- c(Age_betas, model[["coefficients"]][["scale(Age)"]])
Fitness_betas <- c(Fitness_betas, model[["coefficients"]][["scale(Fitness)"]])
Sleep_betas <- c(Sleep_betas, model[["coefficients"]][["scale(Sleep)"]])}
}
没有错误,但是脚本除了添加函数 fun 什么都不做。
Fun<-function() + {
+ Age_betas<-c() + Fitness_betas<-c() + Sleep_betas<-c() +
+ for (counter in 1:5) +
+ {model<-lm(scale(RT )~scale(Age)+scale(Fitness)+scale(Sleep), data=subset(Subjects1_5, Dummy==1 & Subject==i)) +
+ Age_betas <- c(Age_betas, model[["coefficients"] ][["scale(Age)"]]) +
+ Fitness_betas <- c(Fitness_betas, model[["coefficients"]][["scale(Fitness)"]]) +
+ Sleep_betas <- c(Sleep_betas, model [[“系数”]][[“规模(睡眠)”]])} + }
解决方案
我相信你希望你的函数最终做的是 在它们各自的向量中返回Age_betas
,Fitness_betas
和 the 。Sleep_betas
但是,您还没有在您的用户函数中return()
包含输出。另请注意,该函数不允许多参数返回;返回()。
该怎么办:
- 创建一个空列表
beta
;这将是我们存储 beta 向量的列表列表 - 添加返回函数以输出
beta
列表列表 - 然后调用函数
Fun
用户定义的函数来显示 beta 向量。
Fun <- function(){
beta <- list()
for (counter in 1:5){
model<-lm(scale(RT)~scale(Age)+scale(Fitness)+scale(Sleep), data=subset(Subjects1_5, Dummy==1 & Subject==i))
beta[["Age_betas"]] = c(beta[["Age_betas"]], model[["coefficients"]][["scale(Age)"]])
beta[["Fitness_betas"]] = c(beta[["Fitness_betas"]], model[["coefficients"]][["scale(Fitness)"]])
beta[["Sleep_betas"]] = c(beta[["Sleep_betas"]], model[["coefficients"]][["scale(Sleep)"]])
}
return(beta)
}
# Call Function:
Fun()
输出:
# $Age_betas
# [1] -0.3970718 -0.3970718 -0.3970718 -0.3970718 -0.3970718
# $Fitness_betas
# [1] -0.004210636 -0.004210636 -0.004210636 -0.004210636 -0.004210636
# $Sleep_betas
# [1] -0.07401978 -0.07401978 -0.07401978 -0.07401978 -0.07401978
推荐阅读
- php - 如何以角度发布数据
- r - 有没有办法加快 for 循环?
- python - strftime 格式化和 dateutil.relativedelta
- java - 在函数中重新赋值后全局变量值赋值保持不变(Android Studio)
- postgresql - PostgreSQL - 为什么规划者在进行外部扫描时会低估行数?
- r - 用 R 计算 3 个表的平均值
- python - Jinja2 loop creating duplicates
- javascript - Openlayers:TypeError:t.getType 不是函数
- c - 如何收集用户定义的 pthread 退出状态
- platformio - PlatformIO:[upload] Error 2 with esp8266 ESP-07 board