我是R新手,目前正尝试创建3个由多元回归模型的beta值组成的向量。我有三个预测变量A ge,健身和睡眠和因变量 RT 。
对于每个参与者,我都有一个excel表,其中包含在不同时间点的10个测量值。对于每个参与者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之外没有执行任何操作。
乐趣<-function() + {
+ Age_betas <-c() + Fitness_betas <-c() + Sleep_betas <-c() +
+ for(以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)”]])}} +}
答案 0 :(得分:0)
找到解决问题的方法:
age_betas<-c()
fitness_betas<-c()
sleep_betas<-c()
for (i 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)"]])
}
答案 1 :(得分:0)
我相信你希望你的函数最终做的是返回 Age_betas
、Fitness_betas
和 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