## install ----------------------------------------------------
#' @rdname load
#' @export
#' @inheritParams BiocManager::install
#' @inheritParams utils::install.packages
yyinstall <- function(...,
names = NULL,
dependencies = NA,
update = FALSE,
version = BiocManager::version()) {
dots <- match.call(expand.dots = FALSE)$...
name <- vapply(dots, as.character, "")
all <- c(name, names)
tmp_id <- sapply(all, requireNamespace, quietly = TRUE)
tmp_pkgs <- all[!tmp_id]
if (length(tmp_pkgs)) {
BiocManager::install(
tmp_pkgs,
dependencies = dependencies,
update = update,
version = version
)
}
pkg_lst <- sapply(all, requireNamespace, quietly = TRUE)
packageStartupMessage("\nThe install status:")
return(pkg_lst)
}
#' @export
#' @rdname load
yyuninstall <- function(..., names = NULL) {
dots <- match.call(expand.dots = FALSE)$...
name <- vapply(dots, as.character, "")
all <- c(name, names)
utils::remove.packages(all)
}
## auto library ------------------------------------------------
run_library <- function(pkg,
character.only = TRUE,
quietly = TRUE,
warn.conflicts = FALSE) {
if (!requireNamespace(pkg, quietly = TRUE)) {
return(FALSE)
}
loc <- if (pkg %in% loadedNamespaces()) dirname(getNamespaceInfo(pkg, "path"))
do.call(
"library",
list(pkg,
lib.loc = loc,
character.only = character.only,
quietly = quietly,
warn.conflicts = warn.conflicts
)
)
return(TRUE)
}
run_unload <- function(pkg) {
try_res <- try(
detach(paste0("package:", pkg), unload = TRUE, character.only = TRUE),
silent = TRUE
)
if ("try-error" %in% class(try_res)) {
return(FALSE)
}
return(TRUE)
}
## yyload ----------------------------------------------------
#' yyload
#'
#' library packages.
#'
#' @rdname load
#' @param ... names of pkgs, without the quotes.
#' @param names names of pkgs, with the quotes.
#' @param show.conflict Whether to display conflict information.
#'
#' @export
yyload <- function(..., names = NULL, show.conflict = TRUE) {
dots <- match.call(expand.dots = FALSE)$...
name <- vapply(dots, as.character, "")
all <- c(name, names)
tmp_id <- sapply(all, requireNamespace, quietly = TRUE)
tmp_pkgs <- all[!tmp_id]
if (length((tmp_pkgs))) {
if (utils::askYesNo(paste(
"Whether to install:",
paste(tmp_pkgs, collapse = ", ")
))
) {
BiocManager::install(tmp_pkgs, update = FALSE)
}
}
suppressMessages(pkg_lst <- sapply(all, run_library))
if (show.conflict) print(conflicted::conflict_scout())
packageStartupMessage("\nThe load status:")
print(pkg_lst)
}
#' @rdname load
#' @export
#' @examples
#' \dontrun{
#' yyinstall(ggtext, "ggsci")
#' yyuninstall(ggtext, "ggsci")
#'
#' ## restart R
#' yyload(ggtext, "ggsci")
#' yyunload(ggtext, "ggsci")
#' }
yyunload <- function(..., names = NULL) {
dots <- match.call(expand.dots = FALSE)$...
name <- vapply(dots, as.character, "")
all <- c(name, names)
pkg_lst <- sapply(all, run_unload)
packageStartupMessage("The unload status:")
print(pkg_lst)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.