R/fastMerge.R

Defines functions fastmerge

Documented in fastmerge

#' Data.frame merge
#' Merge two dataframes based on column names (not column order)
#'
#' @param d1 first data.frame
#' @param d2 second data.frame
#'
#' @return merged data.frame
#' @export
#'

fastmerge <- function(d1, d2) {
  d1.names <- names(d1)
  d2.names <- names(d2)

  # columns in d1 but not in d2
  d2.add <- setdiff(d1.names, d2.names)

  # columns in d2 but not in d1
  d1.add <- setdiff(d2.names, d1.names)

  # add blank columns to d2
  if(length(d2.add) > 0) {
    for(i in 1:length(d2.add)) {
      d2[d2.add[i]] <- NA
    }
  }

  # add blank columns to d1
  if(length(d1.add) > 0) {
    for(i in 1:length(d1.add)) {
      d1[d1.add[i]] <- NA
    }
  }

  return(rbind(d1, d2))
}
jlivsey/livsey documentation built on Oct. 17, 2024, 3:18 a.m.