# Installs every CRAN package one by one and checks that it loads. Dependencies # go through uvr via local/uvr-install.sh, which bootstraps the uvr binary on # first use and installs into .libPaths()[1]. uvr_install <- function(pkg) { Sys.setenv( UVR_R_BIN = file.path(R.home("bin"), "R"), UVR_TARGET_LIB = .libPaths()[1L] ) status <- system2("local/uvr-install.sh", shQuote(pkg)) if (!identical(status, 0L)) { stop( sprintf("uvr failed to install %s (exit %s)", pkg, status), call. = FALSE ) } } all_pkgs <- rownames(available.packages()) to_skip <- c("ABRSQOL", "ACA", "ACE.CoCo") all_pkgs <- setdiff(all_pkgs, to_skip) for (i in all_pkgs) { message(sprintf("\nInstalling %s", i)) uvr_install(i) library(i, character.only = TRUE) } # Example data all_pkgs <- rownames(available.packages()) to_skip <- c( "ABRSQOL", "ACA", "ACE.CoCo", "ACEsimFit", "ACNE", "absorber", "adapt4pv", "adaptMCMC", "addhaz", "ADDT", "ahaz", "arm", "arules", "arulesCBA", "aster2", "BayesFactor", "bc3net", "bgsmtr", "biglasso", "BinNonNor", "BinNor", "bioassayR", "birankr", "BiRewire", "bolasso", "Boptbd", "Brobdingnag", "BSW", "BTLLasso", "bvartools", "cAIC4", "Category", "celda", "centiserve", "cjoint", "clinical", "clipper", "CodataGS", "conos", "CopulaInference", "covEB", "cplm", "CRTgeeDR", "cthreshER", "ctmcmove", "curephEM", "CVST", "dcGSA", "dclone", "dcsvm", "DelayedArray", "dglars", "dhglm", "disordR", "distrom", "dmm", "DNABarcodes", "DoubleCone", "DRR", "DTRlearn2", "DWDLargeR", "eds", "EMCluster", "EMMREML", "evalITR", "EventPointer", "evola", "excursions", "expm", "fanc", "FAS", "fastadi", "fastPLS", "fastRG", "fdaPDE", "flare", "FoReco", "frailtyHL", "freebird", "FSTpackage", "gamlr", "gamlss.lasso", "gamm4", "gbmt", "gdim", "gdistance", "GeDS", "geeM", "genlasso", "GenOrd", "GenoScan", "geomorph", "geostatsp", "GhostKnockoff", "GIGSEA", "GlarmaVarSel", "glmm", "glmmrBase", "glmmrOptim", "glmnet", "glober", "GPvam", "graphpcor", "gremlin", "growthrate", "grpCox", "GSD", "HelpersMG", "hglm", "hglm.data", "hibayes", "hierSDR", "HMTL", "hsem", "ibmdbR", "inca", "INLAspacetime", "INLAtools", "invertiforms", "irlba", "islasso", "ISLET", "isotonic.pen", "jordan", "kinship2", "KnockoffScreen", "lcpm", "leidenAlg", "lfe", "lingmatch", "LKT", "lme4", "lme4breeding", "lme4GS", "logcondiscr", "LPmerge", "LRMF3", "MAP", "marcox", "markovchain", "MatrixExtra", "matter", "MBC", "mcen", "mclogit", "MCMCglmm", "mdhglm", "MDPtoolbox", "mediation", "mefa4", "metafor", "mgwrsar", "mi", "midasml", "mind", "monocle", "msda", "MuData", "MultiGlarmaVarSel", "MultiOrd", "MultiVarSel", "mvglmmRank", "N2R", "nadiv", "NBtsVarSel", "NegBinBetaBinreg", "NetworkRiskMeasures", "neuroim2", "NOISeq", "numbat", "optbdmaeAT", "optimbase", "OptimModel", "optrcdmaeAT", "OrdNor", "pagoda2", "PCovR", "pedgene", "pedigree", "pedigreemm", "pense", "PERMANOVA", "phateR", "PhylogeneticEM", "pleio", "POINT", "PoisBinNonNor", "PoisBinOrd", "PoisBinOrdNonNor", "PoisBinOrdNor", "PoisNonNor", "PoisNor", "PRISMA", "ProbitSpatial", "prodest", "psqn", "qlcMatrix", "qpcR", "QRM", "quadrupen", "QZ", "ramps", "randnet", "randPedPCA", "rBMF", "RCBR", "RealVAMS", "REBayes", "recommenderlab", "Rediscover", "reglogit", "RESET", "RGE", "RGENERATEPREC", "riemtan", "RNewsflow", "robustlmm", "rsparse", "rSPDE", "rwc", "S4Arrays", "saeMSPE", "sbw", "scITD", "scoup", "sdwd", "SEAGLE", "sensory", "serrsBayes", "sglasso", "sharpPen", "SiPSiC", "SKAT", "snpReady", "snpStats", "softImpute", "sommer", "soptdmaeA", "SOR", "SparseArray", "SparseChol", "sparseLRMatrix", "sparsenet", "sparsenetgls", "sparsestep", "spatialprobit", "spatialreg", "spatstat.sparse", "speedglm", "sRDA", "sSDR", "ssfa", "stcos", "StratifiedSampling", "sureLDA", "survey", "surveyvoi", "svydiags", "systemfit", "TargetScore", "text2map", "textir", "textmineR", "textTinyR", "tmvtnorm", "TPEA", "triversity", "tsapp", "tvReg", "uwot", "vagam", "VAM", "WaveSampling", "WGScan", "wordspace", "workflowsets", "ACSSpack", "ADDT", "AER" ) # Find the position of the last package in to_skip within all_pkgs last_skip <- tail(to_skip, 1) # Find its position in all_pkgs (returns NA if not found) start_pos <- match(last_skip, all_pkgs) # If not found, start from the beginning; else, start after last_skip if (is.na(start_pos)) { to_process <- all_pkgs } else { to_process <- all_pkgs[(start_pos + 1):length(all_pkgs)] } if (length(to_process) == 0) { message("All packages have been processed.") } else { for (i in to_process) { message(sprintf("\nInstalling %s", i)) uvr_install(i) library(i, character.only = TRUE) } # Update to_skip to include all up to the last processed to_skip <- all_pkgs[1:(last_skip_pos + length(to_process))] }