R/rdata.R

Defines functions r_import

Documented in r_import

#' Import an objet from a R data file.
#'
#' @param r_data R data file path.
#' @param object Object name to load.
#'
#' @return If parameter \code{object} stays \code{NULL} then all objects of the R data file loaded in a named list.\cr
#' Otherwise, only the object specified is loaded.
#'
#' @examples
#' impexp::r_import(system.file("extdata/impexp.RData", package = "impexp"))
#' impexp::r_import(system.file("extdata/impexp.RData", package = "impexp"), "data")
#'
#' @export
r_import <- function(r_data, object = NULL){

  if (!file.exists(r_data)) {
    stop(glue::glue("File \"{r_data}\" does not exist"), call. = FALSE)
  }

  env = new.env()
  load(file = r_data, envir = env)

  r_data_file <- stringr::str_match(r_data, "([^\\/]+?)\\.(rda|RData)$")[, 2]

  if (length(env) == 1 & names(env)[1] == r_data_file) {
    r_data_import <- env[[names(env)]]
    return(r_data_import)
  }

  if (!is.null(object)) {
    r_data_import <- env[[object]]
  } else {
    r_data_import <- as.list(env)
  }

  return(r_data_import)
}
stephLH/importr documentation built on April 6, 2020, 7:37 p.m.