我有一个列表 data.frame
我想行附加到另一个对象,即 merge(..., all=T)
.然而,merge
似乎删除了我需要保持完整的行名称。有任何想法吗?例子:
x = data.frame(a=1:2, b=2:3, c=3:4, d=4:5, row.names=c("row_1", "another_row1"))
y = data.frame(a=c(10,20), b=c(20,30), c=c(30,40), row.names=c("row_2", "another_row2"))
> merge(x, y, all=T, sort=F)
a b c d
1 1 2 3 4
2 2 3 4 5
3 10 20 30 NA
4 20 30 40 NA
最佳答案
既然你知道你实际上并没有合并,而只是 rbind-ing,也许这样的事情会奏效。它利用了 rbind.fill
来自“plyr”。要使用它,请指定 list
的data.frame
你要rbind
.
RBIND <- function(datalist) {
require(plyr)
temp <- rbind.fill(datalist)
rownames(temp) <- unlist(lapply(datalist, row.names))
temp
}
RBIND(list(x, y))
# a b c d
# row_1 1 2 3 4
# another_row1 2 3 4 5
# row_2 10 20 30 NA
# another_row2 20 30 40 NA
关于rbind 两个 data.frame 保留行顺序和行名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799434/