R/list2df.R

Defines functions list2df

Documented in list2df

#' Create `data.frame` from `list`
#' 
#' Create a `data.frame` from a `list` directly, i.e. without being required to 
#' explicitly call [rbind()] first.
#' 
#' @param x A `list` object.
#' @param bind Binding direction. Available options are `"rows"` (default) and 
#'   `"cols"` for [rbind()] and [cbind()], respectively.
#' @param ... Additional arguments passed to [data.frame()].
#' 
#' @return A `data.frame` object.
#' 
#' @examples 
#' lst <- list(letters[1:3], letters[4:6], letters[7:9])
#' 
#' do.call("rbind", lst) # results in matrix
#' list2df(lst)          # results in data.frame created using rbind()
#' list2df(lst, bind = "cols") # same for cbind()
#' 
#' @export
list2df <- function(x, bind = c("rows", "cols"), ...) {
  
  bind = bind[1]
  
  mat_x = if (bind == "rows") {
    mat_x = do.call("rbind", x)
  } else if (bind == "cols") {
    do.call("cbind", x)
  } else {
    stop("Binding direction unknown, choose either 'rows' or 'cols'.\n")
  }
  
  data.frame(mat_x, ...)
}

Try the Orcs package in your browser

Any scripts or data that you put into this service are public.

Orcs documentation built on Jan. 6, 2023, 5:14 p.m.