我正在使用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 的值?
答案 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