【发布时间】:2010-09-08 08:33:30
【问题描述】:
如何将向量列表添加到预先分配的 data.frame 中,以便向量构成 data.frame 的行?
例如。
ll<-list(c(1,2,3),c(2,3,4))
dd<-data.frame(matrix(nrow=10,ncol=3))
我需要 dd 看起来像
1 2 3
2 3 4
【问题讨论】:
标签: r
如何将向量列表添加到预先分配的 data.frame 中,以便向量构成 data.frame 的行?
例如。
ll<-list(c(1,2,3),c(2,3,4))
dd<-data.frame(matrix(nrow=10,ncol=3))
我需要 dd 看起来像
1 2 3
2 3 4
【问题讨论】:
标签: r
do.call(rbind, ll)
添加到现有数据框
rbind(dd, do.call(rbind, ll)
# OR
do.call(rbind, c(ll, list(dd))
如果您对许多数据帧执行此操作,请参阅 plyr 包中的 rbind.fill 以获得更有效的方法。
【讨论】:
这个问题有些奇怪:您构建了一个包含 10 行的数据框,其中填充了 NA 值,但您需要 dd 只有 2 行。
首先回答您的问题:有时显而易见的解决方案也不错。
ll<-list(c(1,2,3),c(2,3,4))
dd<-data.frame(matrix(nrow=5,ncol=3))
for(i in 1:length(ll)){
dd[i,] <- ll[[i]]
}
dd
如果您正盯着丑陋的 for 循环看:在这种情况下,您实际上可以毫无问题地使用 for 循环。但这使 dd 拥有大量的 NA 值。如果你想摆脱它们,你可以将你的数据框初始化为
dd<-data.frame(X1=numeric(0),X2=numeric(0),X3=numeric(0))
这会给你一个空的数据框,或者你使用 complete.cases() 来删除所有的 NA:
dd <- dd[complete.cases(dd),]
【讨论】: