R/load_packages.R

#' Install and load R packages
#' @param pkgs R-package in question
#' @return: installed and loaded package
#' @importFrom utils install.packages
#' @examples
#'\dontrun{load_packages(c("base", "jpeg"))}
#' @export
load_packages <- function(pkgs) {
  pkgs_miss <-
    pkgs[which(!pkgs %in% utils::installed.packages()[, 1])]
  if (length(pkgs_miss) > 0) {
    utils::install.packages(pkgs_miss)
  }

  if (length(pkgs_miss) == 0) {
    message("\n ...Packages were already installed!\n")
  }

  # install packages not already loaded:
  pkgs_miss <-
    pkgs[which(!pkgs %in% utils::installed.packages()[, 1])]
  if (length(pkgs_miss) > 0) {
    utils::install.packages(pkgs_miss)
  }

  # load packages not already loaded:
  attached <- search()
  attached_pkgs <- attached[grepl("package", attached)]
  need_to_attach <-
    pkgs[which(!pkgs %in% gsub("package:", "", attached_pkgs))]

  if (length(need_to_attach) > 0) {
    for (i in 1:length(need_to_attach))
      require(need_to_attach[i], character.only = TRUE)
  }

  if (length(need_to_attach) == 0) {
    message("\n ...Packages were already loaded!\n")
  }
}
data-atelier/newsExploreR documentation built on May 22, 2019, 11:51 p.m.