Created
December 20, 2021 21:30
-
-
Save abmathewks/7d9cf606480e9c20cae7a664a0b9359e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PackageCheck <- function(USE_THESE_PACKAGES, | |
DEBUG = TRUE){ | |
if(DEBUG) message("PackageCheck: Function initialized \n") | |
if(any(USE_THESE_PACKAGES == "")){ | |
stop("PackageCheck: An empty string element was passed in USE_THESE_PACKAGES \n") | |
} | |
if(DEBUG) message("PackageCheck: Check for uninstalled packages \n") | |
FUNCTION_OUTPUT <- list() | |
new_packages <- USE_THESE_PACKAGES[!(USE_THESE_PACKAGES %in% installed.packages()[,"Package"])] | |
if(length(new_packages)) { | |
install.packages(new_packages) | |
if(DEBUG) message("PackageCheck: Importing all packages \n") | |
sapply(USE_THESE_PACKAGES[tolower(USE_THESE_PACKAGES) %in% tolower(.packages())], require, character.only = TRUE) | |
} else { | |
if(DEBUG) message("PackageCheck: Importing all packages \n") | |
sapply(USE_THESE_PACKAGES[tolower(USE_THESE_PACKAGES) %in% tolower(.packages())], require, character.only = TRUE) | |
} | |
if(DEBUG) message("PackageCheck: Collecting final output \n") | |
results <- data.table(package_name = names(sapply(USE_THESE_PACKAGES, require, character.only = TRUE)), | |
loaded = sapply(USE_THESE_PACKAGES, require, character.only = TRUE)) | |
FUNCTION_OUTPUT[["USE_THESE_PACKAGES"]] <- USE_THESE_PACKAGES | |
FUNCTION_OUTPUT[["NEW_PACKAGES_TO_INSTALL"]] <- new_packages | |
FUNCTION_OUTPUT[["ALREADY_LOADED"]] <- USE_THESE_PACKAGES[tolower(USE_THESE_PACKAGES) %in% tolower((.packages()))] | |
FUNCTION_OUTPUT[["FINAL_PACKAGE_STATUS"]] <- results | |
if(!is.null(results) || !nrow(results) == 0){ | |
if(DEBUG) message("PackageCheck: Package installation completed \n") | |
return(FUNCTION_OUTPUT) | |
} else { | |
stop("PackageCheck: Function returned an empty data set \n") | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment