Merge Multiple Data Frames by Row Names

前端 未结 3 544
谎友^
谎友^ 2021-02-03 13:34

I\'m trying to merge multiple data frames by row names.

I know how to do it with two:

x = data.frame(a = c(1,2,3), row.names = letters[1:3])
y = data.fra         


        
3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-02-03 14:10

    maybe there exists a faster version using do.call or *apply, but this works in your case:

    x = data.frame(X = c(1,2,3), row.names = letters[1:3])
    y = data.frame(Y = c(1,2,3), row.names = letters[1:3])
    z = data.frame(Z = c(1,2,3), row.names = letters[1:3])
    
    merge.all <- function(x, ..., by = "row.names") {
      L <- list(...)
      for (i in seq_along(L)) {
        x <- merge(x, L[[i]], by = by)
        rownames(x) <- x$Row.names
        x$Row.names <- NULL
      }
      return(x)
    }
    
    merge.all(x,y,z)
    

    important may be to define all the parameters (like by) in the function merge.all you want to forward to merge since the whole ... arguments are used in the list of objects to merge.

提交回复
热议问题