I have a list of data.frame
objects which i would like to row append to one another, ie merge(..., all=T)
. However, merge
seems to remove the row names which I need to be kept intact. Any ideas? Example:
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
Since you know you are not actually merging, but just rbind-ing, maybe something like this will work. It makes use of
rbind.fill
from "plyr". To use it, specify alist
of thedata.frame
s you want torbind
.One way is to use
row.names
in merge so that you get it as an additional column.Edit: By looking at the
merge
function withgetS3method('merge', 'data.frame')
, therow.names
are clearly set to NULL (it is a pretty long code, so I won't paste here).and creating a new function, say,
MERGE
, works as the OP intends for this example. Just an experimentation.