【发布时间】:2015-01-09 17:13:19
【问题描述】:
我有一个包含“i”列的数据框,并希望在每一列上运行“j”回归,而不是从另一个函数(cluster_simple)中提取的组件,返回一个向量,使得:
print(RSquared_1)
[1] "rsquared value 1" "rsquared value 2" "etc,"
为此,我有两个循环:
for (i in 1:columns)
{assign(paste("Rsquared_",i,sep="",collapse=NULL),
#Assign these values from this loop
for (j in 1:iterations)
{ exp<-cluster_simple(frame,number,noprint=T)
reg<-lm(exp[,'clusters']~exp[,i])
rsq[j]<-summary(reg)$r.squared
}
)
}
到目前为止,两个循环都可以自己很好地工作,但是我无法获得要分配给变量的值,我最终得到:
print(RSquared_1)
NULL
我需要在分配中应用一些特定的功能吗?
【问题讨论】:
-
使用
assign是您的第一个错误。这就是预分配列表的用途。为什么你每次都计算cluster_simple(),它似乎没有改变......?你做了多少 R2 值?带有创建iterations的内部 for 循环(以及在哪里创建rsq?),如何将iterationsR2 值折叠为每个i的单个值? -
感谢您的回复。我必须使用分配,因为列数(“i”)会随每个数据帧而变化(我不能列出固定数量的变量)。 cluster_simple() 有一个随机分量,这就是为什么我要多次运行大量回归。大约 1,000 个 rsquared 变量。最终我想要的是一个将所有 rsquared 值分配给 RSquared_columnnumber 的向量
-
您不需要使用
assign。每个数据框的大小可以通过编程方式确定,并用于创建适当长度的列表。