# NOT RUN {
# simple usage, like conditional install.packages then library
Require("stats") # analogous to require(stats), but slower because it checks for
# pkg dependencies, and installs them, if missing
tempPkgFolder <- file.path(tempdir(), "Packages")
# use standAlone, means it will put it in libPath, even if it already exists
# in another local library (e.g., personal library)
Require("crayon", libPath = tempPkgFolder, standAlone = TRUE)
# make a package version snapshot
packageVersionFile <- file.path(tempPkgFolder, ".packageVersion.txt")
pkgSnapshot(libPath=tempPkgFolder, packageVersionFile)
# confirms that correct version is installed
Require("crayon", packageVersionFile = packageVersionFile)
# Create mismatching versions -- desired version is older than current installed
# This will try to install the older version, overwriting the newer version
desiredVersion <- data.frame(instPkgs="crayon", instVers = "1.3.2", stringsAsFactors = FALSE)
write.table(file = packageVersionFile, desiredVersion, row.names = FALSE)
# won't work because newer crayon is loaded
Require("crayon", packageVersionFile = packageVersionFile)
# unload it first
detach("package:crayon", unload = TRUE)
# run again, this time, correct "older" version installs in place of newer one
Require("crayon", packageVersionFile = packageVersionFile)
# Mutual dependencies, only installs once -- e.g., httr
Require(c("cranlogs", "covr"), libPath = tempPkgFolder)
# }
# NOT RUN {
# }
Run the code above in your browser using DataLab