From 092bcdd8664beaae9342174ea20129889bf37043 Mon Sep 17 00:00:00 2001 From: Craig Williams Date: Wed, 29 Nov 2023 16:29:23 +0000 Subject: [PATCH] Even more stringsAsFactors catches --- DESCRIPTION | 2 +- R/compile_imports.R | 6 +++--- R/fetch_available_archives.R | 4 ++-- R/fetch_available_packages.R | 2 +- R/install_package_source.R | 5 +++-- R/restore.R | 26 ++++++++++++++++++++------ R/snapshot_create.R | 2 +- 7 files changed, 31 insertions(+), 16 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index bac3539..7ff9ab7 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: Rpacman Type: Package Title: Very simple package manager for R -Version: 1.0.8 +Version: 1.0.9 Date: 2022-05-31 Authors@R: person("Craig", "Williams", email = "craig@avsdev.uk", role = c("aut", "cre")) URL: https://avsdev.uk/R/Rpacman diff --git a/R/compile_imports.R b/R/compile_imports.R index d6715b1..6f2630b 100644 --- a/R/compile_imports.R +++ b/R/compile_imports.R @@ -66,7 +66,7 @@ ))) } - do.call(rbind, fixedImports) + do.call(rbind, c(fixedImports, stringsAsFactors = FALSE)) } .install_order <- function(dependsTree) { @@ -76,7 +76,7 @@ package <- package[1,c("package", "version", "generation")] return(package) }) - dependsPackages <- do.call(rbind, dependsPackages) + dependsPackages <- do.call(rbind, c(dependsPackages, stringsAsFactors = FALSE)) dependsOrder <- sort(dependsPackages$generation, index.return = T, decreasing = T)$ix dependsOrder <- dependsPackages[dependsOrder,] @@ -172,7 +172,7 @@ compile_imports <- function(custom_sources = empty_sources(), installOpts = list # Cancelled return(invisible(NULL)) } - customImports <- rbind(customImports, extraImports) + customImports <- rbind(customImports, extraImports, stringsAsFactors = FALSE) } coreDeps <- dependsSources[dependsSources$in_core,] diff --git a/R/fetch_available_archives.R b/R/fetch_available_archives.R index 001e820..c728033 100644 --- a/R/fetch_available_archives.R +++ b/R/fetch_available_archives.R @@ -7,12 +7,12 @@ archive <- lapply(archive, function(pkg) { packageVersions <- gsub("^([^/]+)/[^_]+_(.+).tar.gz", "\\1%%\\2", rownames(pkg)) packageVersions <- strsplit(packageVersions, "%%") - packageVersions <- do.call(rbind, packageVersions) + packageVersions <- do.call(rbind, c(packageVersions, stringsAsFactors = FALSE)) pkg[,c("package","version")] <- packageVersions sortOrder <- sort(pkg$version, index.return = TRUE)$ix pkg[sortOrder,c("package", "version")] }) - archive <- do.call(rbind, archive) + archive <- do.call(rbind, c(archive, stringsAsFactors = FALSE)) rownames(archive) <- 1:nrow(archive) write_con <- gzfile(fn, "wb") saveRDS(archive, write_con) diff --git a/R/fetch_available_packages.R b/R/fetch_available_packages.R index 7579d41..f0f8647 100644 --- a/R/fetch_available_packages.R +++ b/R/fetch_available_packages.R @@ -15,7 +15,7 @@ con <- gzfile(fn, "rb") on.exit(close(con), add = TRUE) packages <- readRDS(con) - packages <- as.data.frame(packages) + packages <- as.data.frame(packages, stringsAsFactors = FALSE) packages <- packages[is.na(packages$Path),] packages <- packages[,c("Package", "Version")] colnames(packages) <- c("package", "version") diff --git a/R/install_package_source.R b/R/install_package_source.R index 7567c2e..e0d2822 100644 --- a/R/install_package_source.R +++ b/R/install_package_source.R @@ -30,11 +30,12 @@ install_package_source <- function(packageSource, installOpts = list(Ncpus = par repos = getOption("repos"), type = getOption("pkgType")) allPackages <- utils::installed.packages() - allPackages <- as.data.frame(allPackages) + allPackages <- as.data.frame(allPackages, stringsAsFactors = FALSE) allPackages <- allPackages[allPackages$Package %in% package,] package <- data.frame( package = allPackages$Package, - version = allPackages$Version + version = allPackages$Version, + stringsAsFactors = FALSE ) return(package) diff --git a/R/restore.R b/R/restore.R index fe416ef..34616c5 100644 --- a/R/restore.R +++ b/R/restore.R @@ -1,7 +1,10 @@ # Requires activate.R .install_if_missing <- function(packages, installOpts, lockVersion = TRUE, parallel = FALSE) { - installedPackages <- as.data.frame(utils::installed.packages()[,c("Package","Version")], stringsAsFactors = FALSE) + installedPackages <- as.data.frame( + utils::installed.packages()[,c("Package","Version")], + stringsAsFactors = FALSE + ) if (lockVersion) { packageMatch <- merge( packages, @@ -74,11 +77,22 @@ restore <- function(totalIsolation = FALSE, installOpts = list(Ncpus = parallel: if (is.null(requiredPackages$custom)) { requiredPackages$custom <- list() } - simplePackages <- as.data.frame(apply(rbind( - do.call(rbind, requiredPackages$direct), - do.call(rbind, requiredPackages$indirect) - ), 2, unlist), stringsAsFactors = FALSE) - customPackages <- as.data.frame(do.call(rbind, requiredPackages$custom), stringsAsFactors = FALSE) + simplePackages <- as.data.frame( + apply( + rbind( + do.call(rbind, c(requiredPackages$direct, stringsAsFactors = FALSE)), + do.call(rbind, c(requiredPackages$indirect, stringsAsFactors = FALSE)), + stringsAsFactors = FALSE + ), + 2, + unlist + ), + stringsAsFactors = FALSE + ) + customPackages <- as.data.frame( + do.call(rbind, c(requiredPackages$custom, stringsAsFactors = FALSE)), + stringsAsFactors = FALSE + ) # corePackages <- as.data.frame(apply(do.call(rbind, lastSnapshot$packages$core), 2, unlist)) diff --git a/R/snapshot_create.R b/R/snapshot_create.R index 2794c46..9a0a0f3 100644 --- a/R/snapshot_create.R +++ b/R/snapshot_create.R @@ -14,7 +14,7 @@ snapshot_create <- function(installOpts = list(Ncpus = parallel::detectCores())) lastSnapshot <- snapshot_latest() customSources <- empty_sources() if (!is.null(lastSnapshot) && "custom" %in% names(lastSnapshot$packages)) { - customSources <- rbind(customSources, lastSnapshot$packages$custom) + customSources <- rbind(customSources, lastSnapshot$packages$custom, stringsAsFactors = FALSE) } packages <- compile_imports(customSources, installOpts) names(packages) <- c("core", "direct", "indirect", "custom", "install_order")