-1
我正在使用for-loop在我的数据的特定子集上执行操作。在for循环的每次迭代结束时,我拥有填充我的数据框的一行所需的所有值。逐步填充数据框
到目前为止,我试过
df=NULL
for(...){
//stuff to calculate
newline=c(allthethingscalculated)
df=rbind(df,newline)
}
这会导致无法使用accessable“$”数据框的内容,因为该行是那么原子向量。
我还尝试将每次迭代结束时得到的值追加到已存在的矢量中,并且for循环结束时,使用这些矢量创建数据框但将值附加到各自的矢量上不起作用,这些值没有被添加。
x<-data.frame(a,b,c,d,...)
对此的任何想法?
因为我超过在我的数据标识循环迭代,我意识到我可以做这样的事情:
uids=unique(data$id)
filler=c(1:length(uids))
df=data.frame(uids,filler,filler,filler,filler,filler,filler,filler,filler,filler)
for(i in uids){
...
df[i,]<-newline
}
我以前填料创建具有正确的列数的数据帧和行,所以我没有得到一个错误,如'替换长度为9,替换长度为1'
有没有更好的方法来做到这一点?使用这种方法,我仍然需要删除相应的行中的值填充?
是否每次迭代后'newline'的长度都一样? – 2013-03-19 07:47:12
如果事先知道迭代次数,为什么不用NAs填充data.frame,并用计算来替换每一行?像'df < - as.data.frame(矩阵(NA,i * ncols,ncol = ncols))' – 2013-03-19 07:47:32
也许在开始时你必须说:'df < - data.frame()'。无论如何,没有例子,我觉得这个问题有点不清楚。 – Arun 2013-03-19 07:51:26