为线性回归命名for循环的输出

时间:2014-03-05 15:04:04

标签: r for-loop regression

我非常感谢您对以下代码的任何帮助。我编写了一个代码,通过重复的数据集(单独地根据每个患者id)拟合线性回归线。我真正想要的是能够提取p值高于0.05的名称/ id。

id <- c("A1", "A1","A1", "B10", "B10", "B10","B10", "B10", "C100", "C100", "C100", 
"G100", "G100", "G100")

weight <- rnorm(14, 70) 

height <- rnorm(14, 1.7)

A <- data.frame(id, weight, height) 


model1 <-function(weight, height){
anything<-lm(weight~height)
res<-round(summary(anything)$coefficients[, 4], 3)
res
}


model2<-function(weight,height){
res<-c()
for(i in unique(A$id)){
    res2<-model1(A[A$id == i,]$weight, A[A$id == i,]$height)
    res<-c(res,res2)
}

res
 }

现在的问题是我想根据数据帧A中给出的ID(即A1,B10,C100和G100)命名输出(res)。我尝试添加names(res) <- unique(A$id),但这并没有给我我真正想要的东西。请注意,我对编写循环不是很有经验,所以任何改进我的代码的建议都会受到热烈欢迎。 我希望这个问题足够清楚,但如果不是,我很乐意回答任何问题。

1 个答案:

答案 0 :(得分:3)

c()可以接受命名输入。例如,如果我想创建一个名为xy的向量,我可以这样做:

c(x = 1, y = 2)

在您的情况下,当您追加res2时,您会将其命名为:

res <- c(res, name = res2)

其中name是您要提供的名称。

请注意,在循环之前预先分配矢量会更有效。