R/makeDF_from_list_of_named_vectors.R

Defines functions makeDF_from_list_of_named_vectors

Documented in makeDF_from_list_of_named_vectors

#' Make data frame from list of named vector
#' 
#' @param lst A list of named vectors which we want to position in the outputted data frame.
#' @return A data frame whose columns are refernceColumnNames while rows are the vector members of the lst. 
#' @export


makeDF_from_list_of_named_vectors = function(lst){
  maxlen = max(sapply(lst, length))
  o = as.data.frame(matrix(nrow = 1, ncol = maxlen))
  # obtaining unique column names
  refernceColumnNames = c()
  for(i in 1:length(lst)){
    refernceColumnNames = c(refernceColumnNames, names(lst[[i]]))
  }
  refernceColumnNames = unique(refernceColumnNames)
  colnames(o) = refernceColumnNames
  #
  for(i in 1:length(lst)){
    if(identical(names(lst[[i]]),refernceColumnNames)){
      o = rbind(o,lst[[i]])
    }
    else{
      names_i = names(lst[[i]])
      if(!all(names_i %in% refernceColumnNames)){
        stop(paste("Some of the names in lst iteration ", toString(i), " is not a member of referenceColumnNames",sep=""))
      }
      o = rbind(o, rep(NA,maxlen))
      matchedColumns = match(names_i,refernceColumnNames)
      o[nrow(o),matchedColumns] = lst[[i]]
    }
  }
  o = o[-1,]
  row.names(o) = names(lst)
  return(o)
}
msxakk89/dat documentation built on Aug. 3, 2020, 6:39 p.m.