CRAN Package Check Results for Package countries

Last updated on 2026-06-11 20:53:14 CEST.

Flavor Version Tinstall Tcheck Ttotal Status Flags
r-devel-linux-x86_64-debian-clang 1.2.2 11.01 114.52 125.53 OK
r-devel-linux-x86_64-debian-gcc 1.2.2 6.92 76.15 83.07 ERROR
r-devel-linux-x86_64-fedora-clang 1.2.2 17.00 162.00 179.00 OK
r-devel-linux-x86_64-fedora-gcc 1.2.2 16.00 168.20 184.20 OK
r-devel-windows-x86_64 1.2.2 14.00 134.00 148.00 OK
r-patched-linux-x86_64 1.2.2 10.78 102.48 113.26 OK
r-release-linux-x86_64 1.2.2 10.45 99.02 109.47 OK
r-release-macos-arm64 1.2.2 3.00 32.00 35.00 OK
r-release-macos-x86_64 1.2.2 8.00 129.00 137.00 OK
r-release-windows-x86_64 1.2.2 14.00 133.00 147.00 OK
r-oldrel-macos-arm64 1.2.2 OK
r-oldrel-macos-x86_64 1.2.2 6.00 97.00 103.00 OK
r-oldrel-windows-x86_64 1.2.2 18.00 161.00 179.00 OK

Check Details

Version: 1.2.2
Check: examples
Result: ERROR Running examples in ‘countries-Ex.R’ failed The error most likely occurred in: > base::assign(".ptime", proc.time(), pos = "CheckExEnv") > ### Name: country_info > ### Title: Get information about countries > ### Aliases: country_info > > ### ** Examples > > # Run examples only if a connection to the API is available: > if (check_countries_api(warnings = FALSE)){ + + # The example below queries information on the currency used in Brazil, US and France: + info <- country_info(countries = "Brazil", fields = "capital") + + # data for multiple countries can be requested + info <- country_info(countries = c("Brazil", "USA", "FR"), fields = "capital") + + #' # Data can be returned for all countries by leaving - countries - empty + info <- country_info(fields = "capital") + + # All available fields can be requested by leaving fields empty + info <- country_info(countries = c("Brazil", "USA", "FR")) + + # All information for all countries can be downloaded by leaving both arguments empty + info <- country_info() + + } Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : arguments imply differing number of rows: 1, 0 Calls: country_info ... as.data.frame -> as.data.frame.list -> do.call -> <Anonymous> Execution halted Flavor: r-devel-linux-x86_64-debian-gcc

Version: 1.2.2
Check: tests
Result: ERROR Running ‘testthat.R’ [12s/17s] Running the tests in ‘tests/testthat.R’ failed. Complete output: > library(testthat) > library(countries) > > test_check("countries") In total 1 unique country names were provided 1/1 have been matched with EXACT matching 0/1 have been matched with FUZZY matching The following country IDs do not have a match in one or more of the requested naming conventions, NA returned: (To avoid NAs, use - to = 'simple'- or set - na_fill = TRUE) - Taiwan All values in argument - x - are NA or NULL There is low confidence on the matching of some country names, keeping the original names in - x. Set - verbose - to TRUE for more details There is low confidence on the matching of some country names, returning the closest match. Set - verbose - to TRUE for more details Identifying columns to merge No merging keys were found. Will try merging all columns with matching names! The following columns are being merged: ======= ==== \ freq ======= ==== Table 1 freq Table 2 freq ======= ==== Performing merge: 1/1 Merge complete Identifying columns to merge No merging keys were found. Will try merging all columns with matching names! The following columns are being merged: ======= ==== \ freq ======= ==== Table 1 freq Table 2 freq ======= ==== Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge No merging keys were found. Will try merging all columns with matching names! The following columns are being merged: ======= ==== \ freq ======= ==== Table 1 freq Table 2 freq ======= ==== Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge No merging keys were found. Will try merging all columns with matching names! The following columns are being merged: ======= ==== \ freq ======= ==== Table 1 freq Table 2 freq ======= ==== Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge No merging keys were found. Will try merging all columns with matching names! The following columns are being merged: ======= ==== \ freq ======= ==== Table 1 freq Table 2 freq ======= ==== Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge No merging keys were found. Will try merging all columns with matching names! The following columns are being merged: ======= ==== \ freq ======= ==== Table 1 freq Table 2 freq ======= ==== Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge Table 2 - countries detected in column names, pivoting columns: France, Italy, US Converting country names No merging key found for Table 1. Data will be appended. The following columns are being merged: ======= ======================= \ country ======= ======================= Table 1 Table 2 Table2_pivoted_colnames ======= ======================= Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge Table 2 - countries detected in column names, pivoting columns: France, Italy, US Converting country names No merging key found for Table 1. Data will be appended. The following columns are being merged: ======= ======================= \ country ======= ======================= Table 1 Table 2 Table2_pivoted_colnames ======= ======================= Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge Table 2 - countries detected in column names, pivoting columns: France, Italy, US Converting country names No merging key found for Table 1. Data will be appended. The following columns are being merged: ======= ======================= \ country ======= ======================= Table 1 Table 2 Table2_pivoted_colnames ======= ======================= Performing merge: 1/1 Merge complete Identifying columns to merge Table 2 - countries detected in column names, pivoting columns: France, Italy, US Converting country names No merging key found for Table 1. Data will be appended. The following columns are being merged: ======= ======================= \ country ======= ======================= Table 1 Table 2 Table2_pivoted_colnames ======= ======================= Performing merge: 1/1 Merge complete Identifying columns to merge Table 2 - countries detected in column names, pivoting columns: France, Italy, US Converting country names No merging key found for Table 1. Data will be appended. The following columns are being merged: ======= ======================= \ country ======= ======================= Table 1 Table 2 Table2_pivoted_colnames ======= ======================= Performing merge: 1/1 Merge complete Identifying columns to merge Table 2 - countries detected in column names, pivoting columns: France, Italy, US Converting country names No merging key found for Table 1. Data will be appended. The following columns are being merged: ======= ======================= \ country ======= ======================= Table 1 Table 2 Table2_pivoted_colnames ======= ======================= Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge Table 2 - countries detected in column names, pivoting columns: France, Italy, US Converting country names No merging key found for Table 1. Data will be appended. The following columns are being merged: ======= ======================= \ country ======= ======================= Table 1 Table 2 Table2_pivoted_colnames ======= ======================= Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge No merging keys were found. Will try merging all columns with matching names! Data type for variable HS differ across tables - converting to character Data type for variable freq differ across tables - converting to character The following columns are being merged: ======= === ==== \ HS freq ======= === ==== Table 1 HS freq Table 2 HS Table 3 HS freq ======= === ==== Performing merge: 1/2 Performing merge: 2/2 Merge complete Identifying columns to merge No merging keys were found. Will try merging all columns with matching names! Data type for variable HS differ across tables - converting to character Data type for variable freq differ across tables - converting to character The following columns are being merged: ======= === ==== \ HS freq ======= === ==== Table 1 HS freq Table 2 HS Table 3 HS freq ======= === ==== Performing merge: 1/2 Performing merge: 2/2 Merge complete Identifying columns to merge No merging keys were found. Will try merging all columns with matching names! Data type for variable HS differ across tables - converting to character The following columns are being merged: ======= === \ HS ======= === Table 1 HS Table 2 HS ======= === Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge No merging keys were found. Will try merging all columns with matching names! Data type for variable HS differ across tables - converting to character The following columns are being merged: ======= === \ HS ======= === Table 1 HS Table 2 HS ======= === Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge Table 1 - countries detected in column names, pivoting columns: France, Italy, US Table 2 - years detected in column names, pivoting columns: France1992, France1993, France1994 Converting country names Checking time columns The following columns are being merged: ======= ======================= ===================== \ country time ======= ======================= ===================== Table 1 Table1_pivoted_colnames Table 2 year_pivoted_colnames ======= ======================= ===================== Performing merge: 1/1 Merge complete Identifying columns to merge Table 2 - countries detected in column names, pivoting columns: France, Italy, US Converting country names No merging key found for Table 1. Data will be appended. The following columns are being merged: ======= ======================= \ country ======= ======================= Table 1 Table 2 Table2_pivoted_colnames ======= ======================= Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge Table 1 - countries detected in column names, pivoting columns: Japan, Norway, Germany, US Table 2 - countries detected in column names, pivoting columns: France, Italy, US Converting country names Checking time columns The following columns are being merged: ======= ======================= ==== \ country time ======= ======================= ==== Table 1 Table1_pivoted_colnames Date Table 2 Table2_pivoted_colnames ======= ======================= ==== Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge Checking time columns No merging key found for Table 2. Data will be appended. The following columns are being merged: ======= ==== \ time ======= ==== Table 1 Date Table 2 ======= ==== Performing merge: 1/1 Merge complete (Set merging_info to TRUE to save merging details) Identifying columns to merge Checking time columns No merging key found for Table 2. Data will be appended. The following columns are being merged: ======= ==== \ time ======= ==== Table 1 Date Table 2 ======= ==== Performing merge: 1/1 Merge complete countries detected in column names, pivoting columns: France, Italy, US countries detected in column names, pivoting columns: France, Italy, US countries detected in column names, pivoting columns: France, Italy, US countries detected in column names, pivoting columns: France, Italy, US countries detected in column names, pivoting columns: France, Italy, US countries detected in column names, pivoting columns: France, Italy, US countries detected in column names, pivoting columns: France, Italy, US countries detected in column names, pivoting columns: France, Italy, US No column was pivoted No column was pivoted No column was pivoted year detected in column names, pivoting columns: France1992, France1993, France1994 year detected in column names, pivoting columns: France1992, France1993, France1994 year detected in column names, pivoting columns: France1992, France1993, France1994 year detected in column names, pivoting columns: France1992, France1993, France1994 Saving _problems/test_function_output-251.R Saving _problems/test_function_output-260.R [ FAIL 2 | WARN 0 | SKIP 0 | PASS 146 ] ══ Failed tests ════════════════════════════════════════════════════════════════ ── Error ('test_function_output.R:251:5'): output from list_fields() are as expected ── Error in `(function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, fix.empty.names = TRUE, stringsAsFactors = FALSE) { data.row.names <- if (check.rows && is.null(row.names)) function(current, new, i) { if (is.character(current)) new <- as.character(new) if (is.character(new)) current <- as.character(current) if (anyDuplicated(new)) return(current) if (is.null(current)) return(new) if (all(current == new) || all(current == "")) return(new) stop(gettextf("mismatch of row names in arguments of 'data.frame', item %d", i), domain = NA) } else function(current, new, i) { current %||% if (anyDuplicated(new)) { warning(gettextf("some row.names duplicated: %s --> row.names NOT used", paste(which(duplicated(new)), collapse = ",")), domain = NA) current } else new } object <- as.list(substitute(list(...)))[-1L] mirn <- missing(row.names) mrn <- is.null(row.names) fixRN <- function(rownms) { if (is.object(rownms) || !is.integer(rownms)) rownms <- as.character(rownms) if (anyNA(rownms)) stop("row names contain missing values") if (anyDuplicated(rownms)) stop(gettextf("duplicate row.names: %s", paste(unique(rownms[duplicated(rownms)]), collapse = ", ")), domain = NA) rownms } x <- list(...) n <- length(x) if (n < 1L) { row.names <- if (!mrn) fixRN(row.names) else integer() return(structure(list(), names = character(), row.names = row.names, class = "data.frame")) } vnames <- names(x) if (length(vnames) != n) vnames <- character(n) no.vn <- !nzchar(vnames) vlist <- vnames <- as.list(vnames) nrows <- ncols <- integer(n) for (i in seq_len(n)) { xi <- if (is.character(x[[i]]) || is.list(x[[i]])) as.data.frame(x[[i]], optional = TRUE, validRN = FALSE, stringsAsFactors = stringsAsFactors) else as.data.frame(x[[i]], optional = TRUE, validRN = FALSE) nrows[i] <- .row_names_info(xi) ncols[i] <- length(xi) namesi <- names(xi) if (ncols[i] > 1L) { if (length(namesi) == 0L) namesi <- seq_len(ncols[i]) vnames[[i]] <- if (no.vn[i]) namesi else paste(vnames[[i]], namesi, sep = ".") } else if (length(namesi)) { vnames[[i]] <- namesi } else if (fix.empty.names && no.vn[[i]]) { tmpname <- deparse(object[[i]], nlines = 1L)[1L] if (startsWith(tmpname, "I(") && endsWith(tmpname, ")")) { ntmpn <- nchar(tmpname, "c") tmpname <- substr(tmpname, 3L, ntmpn - 1L) } vnames[[i]] <- tmpname } if (mirn && nrows[i] > 0L) { rowsi <- attr(xi, "row.names") if (any(nzchar(rowsi))) row.names <- data.row.names(row.names, rowsi, i) } nrows[i] <- abs(nrows[i]) vlist[[i]] <- xi } nr <- max(nrows) for (i in seq_len(n)[nrows < nr]) { xi <- vlist[[i]] if (nrows[i] > 0L && (nr%%nrows[i] == 0L)) { xi <- unclass(xi) fixed <- TRUE for (j in seq_along(xi)) { xi1 <- xi[[j]] if (is.vector(xi1) || is.factor(xi1)) xi[[j]] <- rep(xi1, length.out = nr) else if (is.character(xi1) && inherits(xi1, "AsIs")) xi[[j]] <- structure(rep(xi1, length.out = nr), class = class(xi1)) else if (inherits(xi1, "Date") || inherits(xi1, "POSIXct")) xi[[j]] <- rep(xi1, length.out = nr) else { fixed <- FALSE break } } if (fixed) { vlist[[i]] <- xi next } } stop(gettextf("arguments imply differing number of rows: %s", paste(unique(nrows), collapse = ", ")), domain = NA) } value <- unlist(vlist, recursive = FALSE, use.names = FALSE) vnames <- as.character(unlist(vnames[ncols > 0L])) if (fix.empty.names && any(noname <- !nzchar(vnames))) vnames[noname] <- paste0("Var.", seq_along(vnames))[noname] if (check.names) { if (fix.empty.names) vnames <- make.names(vnames, unique = TRUE) else { nz <- nzchar(vnames) vnames[nz] <- make.names(vnames[nz], unique = TRUE) } } names(value) <- vnames if (!mrn) { if (length(row.names) == 1L && nr != 1L) { if (is.character(row.names)) row.names <- match(row.names, vnames, 0L) if (length(row.names) != 1L || row.names < 1L || row.names > length(vnames)) stop("'row.names' should specify one of the variables") i <- row.names row.names <- value[[i]] value <- value[-i] } else if (!is.null(row.names) && length(row.names) != nr) stop("row names supplied are of the wrong length") } else if (!is.null(row.names) && length(row.names) != nr) { warning("row names were found from a short variable and have been discarded") row.names <- NULL } class(value) <- "data.frame" if (is.null(row.names)) attr(value, "row.names") <- .set_row_names(nr) else { row.names(value) <- fixRN(row.names) } value })(success = FALSE, data = NULL, errors = structure(list(message = "This API version has been deprecated. Please visit the https://restcountries.com/docs/legacy-api-deprecation to migrate to our new version (v5)."), class = "data.frame", row.names = 1L), check.names = TRUE, fix.empty.names = TRUE, stringsAsFactors = FALSE)`: arguments imply differing number of rows: 1, 0 Backtrace: ▆ 1. ├─testthat::expect_equal(length(list_fields()) > 0, TRUE) at test_function_output.R:251:5 2. │ └─testthat::quasi_label(enquo(object), label) 3. │ └─rlang::eval_bare(expr, quo_get_env(quo)) 4. └─countries::list_fields() 5. └─countries::country_info() 6. ├─base::as.data.frame(data) 7. └─base::as.data.frame.list(data) 8. ├─base::do.call(data.frame, c(x, alis)) 9. └─base (local) `<fn>`(...) ── Error ('test_function_output.R:260:5'): output from country_info() are as expected ── Error in `(function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, fix.empty.names = TRUE, stringsAsFactors = FALSE) { data.row.names <- if (check.rows && is.null(row.names)) function(current, new, i) { if (is.character(current)) new <- as.character(new) if (is.character(new)) current <- as.character(current) if (anyDuplicated(new)) return(current) if (is.null(current)) return(new) if (all(current == new) || all(current == "")) return(new) stop(gettextf("mismatch of row names in arguments of 'data.frame', item %d", i), domain = NA) } else function(current, new, i) { current %||% if (anyDuplicated(new)) { warning(gettextf("some row.names duplicated: %s --> row.names NOT used", paste(which(duplicated(new)), collapse = ",")), domain = NA) current } else new } object <- as.list(substitute(list(...)))[-1L] mirn <- missing(row.names) mrn <- is.null(row.names) fixRN <- function(rownms) { if (is.object(rownms) || !is.integer(rownms)) rownms <- as.character(rownms) if (anyNA(rownms)) stop("row names contain missing values") if (anyDuplicated(rownms)) stop(gettextf("duplicate row.names: %s", paste(unique(rownms[duplicated(rownms)]), collapse = ", ")), domain = NA) rownms } x <- list(...) n <- length(x) if (n < 1L) { row.names <- if (!mrn) fixRN(row.names) else integer() return(structure(list(), names = character(), row.names = row.names, class = "data.frame")) } vnames <- names(x) if (length(vnames) != n) vnames <- character(n) no.vn <- !nzchar(vnames) vlist <- vnames <- as.list(vnames) nrows <- ncols <- integer(n) for (i in seq_len(n)) { xi <- if (is.character(x[[i]]) || is.list(x[[i]])) as.data.frame(x[[i]], optional = TRUE, validRN = FALSE, stringsAsFactors = stringsAsFactors) else as.data.frame(x[[i]], optional = TRUE, validRN = FALSE) nrows[i] <- .row_names_info(xi) ncols[i] <- length(xi) namesi <- names(xi) if (ncols[i] > 1L) { if (length(namesi) == 0L) namesi <- seq_len(ncols[i]) vnames[[i]] <- if (no.vn[i]) namesi else paste(vnames[[i]], namesi, sep = ".") } else if (length(namesi)) { vnames[[i]] <- namesi } else if (fix.empty.names && no.vn[[i]]) { tmpname <- deparse(object[[i]], nlines = 1L)[1L] if (startsWith(tmpname, "I(") && endsWith(tmpname, ")")) { ntmpn <- nchar(tmpname, "c") tmpname <- substr(tmpname, 3L, ntmpn - 1L) } vnames[[i]] <- tmpname } if (mirn && nrows[i] > 0L) { rowsi <- attr(xi, "row.names") if (any(nzchar(rowsi))) row.names <- data.row.names(row.names, rowsi, i) } nrows[i] <- abs(nrows[i]) vlist[[i]] <- xi } nr <- max(nrows) for (i in seq_len(n)[nrows < nr]) { xi <- vlist[[i]] if (nrows[i] > 0L && (nr%%nrows[i] == 0L)) { xi <- unclass(xi) fixed <- TRUE for (j in seq_along(xi)) { xi1 <- xi[[j]] if (is.vector(xi1) || is.factor(xi1)) xi[[j]] <- rep(xi1, length.out = nr) else if (is.character(xi1) && inherits(xi1, "AsIs")) xi[[j]] <- structure(rep(xi1, length.out = nr), class = class(xi1)) else if (inherits(xi1, "Date") || inherits(xi1, "POSIXct")) xi[[j]] <- rep(xi1, length.out = nr) else { fixed <- FALSE break } } if (fixed) { vlist[[i]] <- xi next } } stop(gettextf("arguments imply differing number of rows: %s", paste(unique(nrows), collapse = ", ")), domain = NA) } value <- unlist(vlist, recursive = FALSE, use.names = FALSE) vnames <- as.character(unlist(vnames[ncols > 0L])) if (fix.empty.names && any(noname <- !nzchar(vnames))) vnames[noname] <- paste0("Var.", seq_along(vnames))[noname] if (check.names) { if (fix.empty.names) vnames <- make.names(vnames, unique = TRUE) else { nz <- nzchar(vnames) vnames[nz] <- make.names(vnames[nz], unique = TRUE) } } names(value) <- vnames if (!mrn) { if (length(row.names) == 1L && nr != 1L) { if (is.character(row.names)) row.names <- match(row.names, vnames, 0L) if (length(row.names) != 1L || row.names < 1L || row.names > length(vnames)) stop("'row.names' should specify one of the variables") i <- row.names row.names <- value[[i]] value <- value[-i] } else if (!is.null(row.names) && length(row.names) != nr) stop("row names supplied are of the wrong length") } else if (!is.null(row.names) && length(row.names) != nr) { warning("row names were found from a short variable and have been discarded") row.names <- NULL } class(value) <- "data.frame" if (is.null(row.names)) attr(value, "row.names") <- .set_row_names(nr) else { row.names(value) <- fixRN(row.names) } value })(success = FALSE, data = NULL, errors = structure(list(message = "This API version has been deprecated. Please visit the https://restcountries.com/docs/legacy-api-deprecation to migrate to our new version (v5)."), class = "data.frame", row.names = 1L), check.names = TRUE, fix.empty.names = TRUE, stringsAsFactors = FALSE)`: arguments imply differing number of rows: 1, 0 Backtrace: ▆ 1. ├─testthat::expect_equal(...) at test_function_output.R:260:5 2. │ └─testthat::quasi_label(enquo(object), label) 3. │ └─rlang::eval_bare(expr, quo_get_env(quo)) 4. ├─base::is.data.frame(country_info("USA", "capital")) 5. └─countries::country_info("USA", "capital") 6. ├─base::as.data.frame(data) 7. └─base::as.data.frame.list(data) 8. ├─base::do.call(data.frame, c(x, alis)) 9. └─base (local) `<fn>`(...) [ FAIL 2 | WARN 0 | SKIP 0 | PASS 146 ] Error: ! Test failures. Execution halted Flavor: r-devel-linux-x86_64-debian-gcc