逐步填充数据帧

时间:2013-03-19 07:40:39

标签: r dataframe

我正在使用for循环对我的数据的特定子集执行操作。在for循环的每次迭代结束时,我拥有填充数据帧行所需的所有值。

到目前为止,我试过

df=NULL
for(...){  
//stuff to calculate   
newline=c(allthethingscalculated)  
df=rbind(df,newline)
}

这导致数据帧的内容无法使用'$'访问,因为行是原子矢量。

我还尝试将每次迭代结束时得到的值附加到已经存在的向量中,当for循环结束时,使用这些向量创建数据帧但是将值附加到相应的向量不起作用,没有添加值。

x<-data.frame(a,b,c,d,...)

有关于此的任何想法吗?


由于我的for循环遍历数据中的ID,我意识到我可以做这样的事情:

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
}

我使用 filler 来创建一个具有正确列数和行数的数据帧,因此我不会收到“替换长度为9,替换长度为1”的错误

有更好的方法吗?使用这种方法,我仍然需要在相应的行中删除 filler 的值?

1 个答案:

答案 0 :(得分:0)

这应该有用,你能告诉我们你的数据吗?

R) x=data.frame(a=rep(1,3),b=rep(2,3),c=rep(3,3))
R) d=c(4,4,4)
R) rbind(x,d)
  a b c
1 1 2 3
2 1 2 3
3 1 2 3
4 4 4 4
R) cbind(x,d)
  a b c d
1 1 2 3 4
2 1 2 3 4
3 1 2 3 4