remove warnings from unit tests

This commit is contained in:
dr. M.S. (Matthijs) Berends 2022-10-19 11:47:57 +02:00
parent fed3b6440f
commit 85e2fbe4a3
35 changed files with 115 additions and 110 deletions

View File

@ -1,5 +1,5 @@
Package: AMR Package: AMR
Version: 1.8.2.9022 Version: 1.8.2.9023
Date: 2022-10-19 Date: 2022-10-19
Title: Antimicrobial Resistance Data Analysis Title: Antimicrobial Resistance Data Analysis
Description: Functions to simplify and standardise antimicrobial resistance (AMR) Description: Functions to simplify and standardise antimicrobial resistance (AMR)

View File

@ -1,4 +1,4 @@
# AMR 1.8.2.9022 # AMR 1.8.2.9023
This version will eventually become v2.0! We're happy to reach a new major milestone soon! This version will eventually become v2.0! We're happy to reach a new major milestone soon!

View File

@ -226,7 +226,7 @@ search_type_in_df <- function(x, type, info = TRUE) {
# -- mo # -- mo
if (type == "mo") { if (type == "mo") {
if (any(vapply(FUN.VALUE = logical(1), x, is.mo))) { if (any(vapply(FUN.VALUE = logical(1), x, is.mo))) {
# take first <mo> column # take first 'mo' column
found <- colnames(x)[vapply(FUN.VALUE = logical(1), x, is.mo)] found <- colnames(x)[vapply(FUN.VALUE = logical(1), x, is.mo)]
} else if ("mo" %in% colnames_formatted && } else if ("mo" %in% colnames_formatted &&
suppressWarnings(all(x$mo %in% c(NA, AMR::microorganisms$mo)))) { suppressWarnings(all(x$mo %in% c(NA, AMR::microorganisms$mo)))) {
@ -664,7 +664,7 @@ vector_or <- function(v, quotes = TRUE, reverse = FALSE, sort = TRUE, initial_ca
return(paste0(quotes, v, quotes)) return(paste0(quotes, v, quotes))
} }
if (identical(v, c("I", "R", "S"))) { if (identical(v, c("I", "R", "S"))) {
# class <rsi> should be sorted like this # class 'rsi' should be sorted like this
v <- c("R", "S", "I") v <- c("R", "S", "I")
} }
# all commas except for last item, so will become '"val1", "val2", "val3" or "val4"' # all commas except for last item, so will become '"val1", "val2", "val3" or "val4"'
@ -1434,7 +1434,7 @@ s3_register <- function(generic, class, method = NULL) {
# see here for the full list: https://github.com/r-lib/backports # see here for the full list: https://github.com/r-lib/backports
if (getRversion() < "3.1.0") { if (getRversion() < "3.1.0") {
# R-3.0 does not contain these functions, set them here to prevent installation failure # R-3.0 does not contain these functions, set them here to prevent installation failure
# (required for extension of the <mic> class) # (required for extension of the 'mic' class)
cospi <- function(...) 1 cospi <- function(...) 1
sinpi <- function(...) 1 sinpi <- function(...) 1
tanpi <- function(...) 1 tanpi <- function(...) 1

7
R/ab.R
View File

@ -84,12 +84,13 @@
#' # they use as.ab() internally: #' # they use as.ab() internally:
#' ab_name("J01FA01") # "Erythromycin" #' ab_name("J01FA01") # "Erythromycin"
#' ab_name("eryt") # "Erythromycin" #' ab_name("eryt") # "Erythromycin"
#'
#' \donttest{ #' \donttest{
#' if (require("dplyr")) { #' if (require("dplyr")) {
#' #'
#' # you can quickly rename <rsi> columns using dplyr >= 1.0.0: #' # you can quickly rename 'rsi' columns using set_ab_names() with dplyr:
#' example_isolates %>% #' example_isolates %>%
#' rename_with(as.ab, where(is.rsi)) #' set_ab_names(where(is.rsi), property = "atc")
#' } #' }
#' } #' }
as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) { as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) {
@ -548,7 +549,7 @@ type_sum.ab <- function(x, ...) {
#' @export #' @export
#' @noRd #' @noRd
print.ab <- function(x, ...) { print.ab <- function(x, ...) {
cat("Class <ab>\n") cat("Class 'ab'\n")
print(as.character(x), quote = FALSE) print(as.character(x), quote = FALSE)
} }

View File

@ -453,7 +453,7 @@ set_ab_names <- function(data, ..., property = "name", language = get_AMR_locale
ab_validate <- function(x, property, ...) { ab_validate <- function(x, property, ...) {
if (tryCatch(all(x[!is.na(x)] %in% AMR_env$AB_lookup$ab), error = function(e) FALSE)) { if (tryCatch(all(x[!is.na(x)] %in% AMR_env$AB_lookup$ab), error = function(e) FALSE)) {
# special case for ab_* functions where class is already <ab> # special case for ab_* functions where class is already 'ab'
x <- AMR_env$AB_lookup[match(x, AMR_env$AB_lookup$ab), property, drop = TRUE] x <- AMR_env$AB_lookup[match(x, AMR_env$AB_lookup$ab), property, drop = TRUE]
} else { } else {
# try to catch an error when inputting an invalid argument # try to catch an error when inputting an invalid argument

View File

@ -32,7 +32,7 @@
#' These functions allow for filtering rows and selecting columns based on antibiotic test results that are of a specific antibiotic class or group, without the need to define the columns or antibiotic abbreviations. In short, if you have a column name that resembles an antimicrobial agent, it will be picked up by any of these functions that matches its pharmaceutical class: "cefazolin", "CZO" and "J01DB04" will all be picked up by [cephalosporins()]. #' These functions allow for filtering rows and selecting columns based on antibiotic test results that are of a specific antibiotic class or group, without the need to define the columns or antibiotic abbreviations. In short, if you have a column name that resembles an antimicrobial agent, it will be picked up by any of these functions that matches its pharmaceutical class: "cefazolin", "CZO" and "J01DB04" will all be picked up by [cephalosporins()].
#' @param ab_class an antimicrobial class or a part of it, such as `"carba"` and `"carbapenems"`. The columns `group`, `atc_group1` and `atc_group2` of the [antibiotics] data set will be searched (case-insensitive) for this value. #' @param ab_class an antimicrobial class or a part of it, such as `"carba"` and `"carbapenems"`. The columns `group`, `atc_group1` and `atc_group2` of the [antibiotics] data set will be searched (case-insensitive) for this value.
#' @param filter an [expression] to be evaluated in the [antibiotics] data set, such as `name %like% "trim"` #' @param filter an [expression] to be evaluated in the [antibiotics] data set, such as `name %like% "trim"`
#' @param only_rsi_columns a [logical] to indicate whether only columns of class `<rsi>` must be selected (defaults to `FALSE`), see [as.rsi()] #' @param only_rsi_columns a [logical] to indicate whether only columns of class `rsi` must be selected (defaults to `FALSE`), see [as.rsi()]
#' @param only_treatable a [logical] to indicate whether agents that are only for laboratory tests should be excluded (defaults to `TRUE`), such as gentamicin-high (`GEH`) and imipenem/EDTA (`IPE`) #' @param only_treatable a [logical] to indicate whether agents that are only for laboratory tests should be excluded (defaults to `TRUE`), such as gentamicin-high (`GEH`) and imipenem/EDTA (`IPE`)
#' @param ... ignored, only in place to allow future extensions #' @param ... ignored, only in place to allow future extensions
#' @details #' @details
@ -575,7 +575,7 @@ ab_select_exec <- function(function_name,
} else if (isTRUE(function_name == "antimycobacterials")) { } else if (isTRUE(function_name == "antimycobacterials")) {
abx <- AMR_env$AB_lookup$ab[which(AMR_env$AB_lookup$group == "Antimycobacterials")] abx <- AMR_env$AB_lookup$ab[which(AMR_env$AB_lookup$group == "Antimycobacterials")]
} else { } else {
# their upper case equivalent are vectors with class <ab>, created in data-raw/_pre_commit_hook.R # their upper case equivalent are vectors with class 'ab', created in data-raw/_pre_commit_hook.R
# carbapenems() gets its codes from AMR:::AB_CARBAPENEMS # carbapenems() gets its codes from AMR:::AB_CARBAPENEMS
abx <- get(paste0("AB_", toupper(function_name)), envir = asNamespace("AMR")) abx <- get(paste0("AB_", toupper(function_name)), envir = asNamespace("AMR"))
# manually added codes from add_custom_antimicrobials() must also be supported # manually added codes from add_custom_antimicrobials() must also be supported

View File

@ -253,20 +253,22 @@ print.custom_eucast_rules <- function(x, ...) {
} }
format_custom_query_rule <- function(query, colours = has_colour()) { format_custom_query_rule <- function(query, colours = has_colour()) {
query <- gsub(" & ", font_black(font_bold(" and ")), query, fixed = TRUE) # font_black() is very expensive in RStudio because it checks if the theme is dark, so do it once:
query <- gsub(" | ", font_black(" or "), query, fixed = TRUE) txt <- font_black("{text}")
query <- gsub(" + ", font_black(" plus "), query, fixed = TRUE) query <- gsub(" & ", sub("{text}", font_bold(" and "), txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" - ", font_black(" minus "), query, fixed = TRUE) query <- gsub(" | ", sub("{text}", " or ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" / ", font_black(" divided by "), query, fixed = TRUE) query <- gsub(" + ", sub("{text}", " plus ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" * ", font_black(" times "), query, fixed = TRUE) query <- gsub(" - ", sub("{text}", " minus ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" == ", font_black(" is "), query, fixed = TRUE) query <- gsub(" / ", sub("{text}", " divided by ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" > ", font_black(" is higher than "), query, fixed = TRUE) query <- gsub(" * ", sub("{text}", " times ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" < ", font_black(" is lower than "), query, fixed = TRUE) query <- gsub(" == ", sub("{text}", " is ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" >= ", font_black(" is higher than or equal to "), query, fixed = TRUE) query <- gsub(" > ", sub("{text}", " is higher than ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" <= ", font_black(" is lower than or equal to "), query, fixed = TRUE) query <- gsub(" < ", sub("{text}", " is lower than ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" ^ ", font_black(" to the power of "), query, fixed = TRUE) query <- gsub(" >= ", sub("{text}", " is higher than or equal to ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" %in% ", font_black(" is one of "), query, fixed = TRUE) query <- gsub(" <= ", sub("{text}", " is lower than or equal to ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" %like% ", font_black(" resembles "), query, fixed = TRUE) query <- gsub(" ^ ", sub("{text}", " to the power of ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" %in% ", sub("{text}", " is one of ", txt, fixed = TRUE), query, fixed = TRUE)
query <- gsub(" %like% ", sub("{text}", " resembles ", txt, fixed = TRUE), query, fixed = TRUE)
if (colours == TRUE) { if (colours == TRUE) {
query <- gsub('"R"', font_red_bg(" R "), query, fixed = TRUE) query <- gsub('"R"', font_red_bg(" R "), query, fixed = TRUE)
query <- gsub('"S"', font_green_bg(" S "), query, fixed = TRUE) query <- gsub('"S"', font_green_bg(" S "), query, fixed = TRUE)

View File

@ -139,7 +139,7 @@ all_valid_disks <- function(x) {
} }
#' @rdname as.disk #' @rdname as.disk
#' @details `NA_disk_` is a missing value of the new `<disk>` class. #' @details `NA_disk_` is a missing value of the new `disk` class.
#' @export #' @export
NA_disk_ <- set_clean_class(as.integer(NA_real_), NA_disk_ <- set_clean_class(as.integer(NA_real_),
new_class = c("disk", "integer") new_class = c("disk", "integer")
@ -167,7 +167,7 @@ type_sum.disk <- function(x, ...) {
#' @export #' @export
#' @noRd #' @noRd
print.disk <- function(x, ...) { print.disk <- function(x, ...) {
cat("Class <disk>\n") cat("Class 'disk'\n")
print(as.integer(x), quote = FALSE) print(as.integer(x), quote = FALSE)
} }

View File

@ -69,7 +69,7 @@ format_eucast_version_nr <- function(version, markdown = TRUE) {
#' @param ... column name of an antibiotic, see section *Antibiotics* below #' @param ... column name of an antibiotic, see section *Antibiotics* below
#' @param ab any (vector of) text that can be coerced to a valid antibiotic code with [as.ab()] #' @param ab any (vector of) text that can be coerced to a valid antibiotic code with [as.ab()]
#' @param administration route of administration, either `r vector_or(dosage$administration)` #' @param administration route of administration, either `r vector_or(dosage$administration)`
#' @param only_rsi_columns a [logical] to indicate whether only antibiotic columns must be detected that were transformed to class `<rsi>` (see [as.rsi()]) on beforehand (defaults to `FALSE`) #' @param only_rsi_columns a [logical] to indicate whether only antibiotic columns must be detected that were transformed to class `rsi` (see [as.rsi()]) on beforehand (defaults to `FALSE`)
#' @param custom_rules custom rules to apply, created with [custom_eucast_rules()] #' @param custom_rules custom rules to apply, created with [custom_eucast_rules()]
#' @inheritParams first_isolate #' @inheritParams first_isolate
#' @details #' @details
@ -1023,7 +1023,7 @@ eucast_rules <- function(x,
warn_lacking_rsi_class <- warn_lacking_rsi_class[order(colnames(x.bak))] warn_lacking_rsi_class <- warn_lacking_rsi_class[order(colnames(x.bak))]
warn_lacking_rsi_class <- warn_lacking_rsi_class[!is.na(warn_lacking_rsi_class)] warn_lacking_rsi_class <- warn_lacking_rsi_class[!is.na(warn_lacking_rsi_class)]
warning_( warning_(
"in `eucast_rules()`: not all columns with antimicrobial results are of class <rsi>. Transform them on beforehand, with e.g.:\n", "in `eucast_rules()`: not all columns with antimicrobial results are of class 'rsi'. Transform them on beforehand, with e.g.:\n",
" - ", x_deparsed, " %>% as.rsi(", ifelse(length(warn_lacking_rsi_class) == 1, " - ", x_deparsed, " %>% as.rsi(", ifelse(length(warn_lacking_rsi_class) == 1,
warn_lacking_rsi_class, warn_lacking_rsi_class,
paste0(warn_lacking_rsi_class[1], ":", warn_lacking_rsi_class[length(warn_lacking_rsi_class)]) paste0(warn_lacking_rsi_class[1], ":", warn_lacking_rsi_class[length(warn_lacking_rsi_class)])

View File

@ -48,7 +48,7 @@
#' @param points_threshold minimum number of points to require before differences in the antibiogram will lead to inclusion of an isolate when `type = "points"`, see *Details* #' @param points_threshold minimum number of points to require before differences in the antibiogram will lead to inclusion of an isolate when `type = "points"`, see *Details*
#' @param info a [logical] to indicate info should be printed, defaults to `TRUE` only in interactive mode #' @param info a [logical] to indicate info should be printed, defaults to `TRUE` only in interactive mode
#' @param include_unknown a [logical] to indicate whether 'unknown' microorganisms should be included too, i.e. microbial code `"UNKNOWN"`, which defaults to `FALSE`. For WHONET users, this means that all records with organism code `"con"` (*contamination*) will be excluded at default. Isolates with a microbial ID of `NA` will always be excluded as first isolate. #' @param include_unknown a [logical] to indicate whether 'unknown' microorganisms should be included too, i.e. microbial code `"UNKNOWN"`, which defaults to `FALSE`. For WHONET users, this means that all records with organism code `"con"` (*contamination*) will be excluded at default. Isolates with a microbial ID of `NA` will always be excluded as first isolate.
#' @param include_untested_rsi a [logical] to indicate whether also rows without antibiotic results are still eligible for becoming a first isolate. Use `include_untested_rsi = FALSE` to always return `FALSE` for such rows. This checks the data set for columns of class `<rsi>` and consequently requires transforming columns with antibiotic results using [as.rsi()] first. #' @param include_untested_rsi a [logical] to indicate whether also rows without antibiotic results are still eligible for becoming a first isolate. Use `include_untested_rsi = FALSE` to always return `FALSE` for such rows. This checks the data set for columns of class `rsi` and consequently requires transforming columns with antibiotic results using [as.rsi()] first.
#' @param ... arguments passed on to [first_isolate()] when using [filter_first_isolate()], otherwise arguments passed on to [key_antimicrobials()] (such as `universal`, `gram_negative`, `gram_positive`) #' @param ... arguments passed on to [first_isolate()] when using [filter_first_isolate()], otherwise arguments passed on to [key_antimicrobials()] (such as `universal`, `gram_negative`, `gram_positive`)
#' @details #' @details
#' To conduct epidemiological analyses on antimicrobial resistance data, only so-called first isolates should be included to prevent overestimation and underestimation of antimicrobial resistance. Different methods can be used to do so, see below. #' To conduct epidemiological analyses on antimicrobial resistance data, only so-called first isolates should be included to prevent overestimation and underestimation of antimicrobial resistance. Different methods can be used to do so, see below.

View File

@ -33,7 +33,7 @@
#' @param x a [data.frame] #' @param x a [data.frame]
#' @param search_string a text to search `x` for, will be checked with [as.ab()] if this value is not a column in `x` #' @param search_string a text to search `x` for, will be checked with [as.ab()] if this value is not a column in `x`
#' @param verbose a [logical] to indicate whether additional info should be printed #' @param verbose a [logical] to indicate whether additional info should be printed
#' @param only_rsi_columns a [logical] to indicate whether only antibiotic columns must be detected that were transformed to class `<rsi>` (see [as.rsi()]) on beforehand (defaults to `FALSE`) #' @param only_rsi_columns a [logical] to indicate whether only antibiotic columns must be detected that were transformed to class `rsi` (see [as.rsi()]) on beforehand (defaults to `FALSE`)
#' @details You can look for an antibiotic (trade) name or abbreviation and it will search `x` and the [antibiotics] data set for any column containing a name or code of that antibiotic. #' @details You can look for an antibiotic (trade) name or abbreviation and it will search `x` and the [antibiotics] data set for any column containing a name or code of that antibiotic.
#' @return A column name of `x`, or `NULL` when no result is found. #' @return A column name of `x`, or `NULL` when no result is found.
#' @export #' @export
@ -171,7 +171,7 @@ get_column_abx <- function(x,
} }
# only check columns that are a valid AB code, ATC code, name, abbreviation or synonym, # only check columns that are a valid AB code, ATC code, name, abbreviation or synonym,
# or already have the <rsi> class (as.rsi) # or already have the 'rsi' class (as.rsi)
# and that they have no more than 50% invalid values # and that they have no more than 50% invalid values
vectr_antibiotics <- unlist(AMR_env$AB_lookup$generalised_all) vectr_antibiotics <- unlist(AMR_env$AB_lookup$generalised_all)
vectr_antibiotics <- vectr_antibiotics[!is.na(vectr_antibiotics) & nchar(vectr_antibiotics) >= 3] vectr_antibiotics <- vectr_antibiotics[!is.na(vectr_antibiotics) & nchar(vectr_antibiotics) >= 3]

View File

@ -37,7 +37,7 @@
#' @param gram_negative names of antibiotic agents for **Gram-positives**, case-insensitive. Set to `NULL` to ignore. See *Details* for the default agents. #' @param gram_negative names of antibiotic agents for **Gram-positives**, case-insensitive. Set to `NULL` to ignore. See *Details* for the default agents.
#' @param gram_positive names of antibiotic agents for **Gram-negatives**, case-insensitive. Set to `NULL` to ignore. See *Details* for the default agents. #' @param gram_positive names of antibiotic agents for **Gram-negatives**, case-insensitive. Set to `NULL` to ignore. See *Details* for the default agents.
#' @param antifungal names of antifungal agents for **fungi**, case-insensitive. Set to `NULL` to ignore. See *Details* for the default agents. #' @param antifungal names of antifungal agents for **fungi**, case-insensitive. Set to `NULL` to ignore. See *Details* for the default agents.
#' @param only_rsi_columns a [logical] to indicate whether only columns must be included that were transformed to class `<rsi>` (see [as.rsi()]) on beforehand (defaults to `FALSE`) #' @param only_rsi_columns a [logical] to indicate whether only columns must be included that were transformed to class `rsi` (see [as.rsi()]) on beforehand (defaults to `FALSE`)
#' @param ... ignored, only in place to allow future extensions #' @param ... ignored, only in place to allow future extensions
#' @details #' @details
#' The [key_antimicrobials()] and [all_antimicrobials()] functions are context-aware. This means that the `x` argument can be left blank if used inside a [data.frame] call, see *Examples*. #' The [key_antimicrobials()] and [all_antimicrobials()] functions are context-aware. This means that the `x` argument can be left blank if used inside a [data.frame] call, see *Examples*.

View File

@ -1941,9 +1941,9 @@ print.custom_mdro_guideline <- function(x, ...) {
cat(" ", i + 1, ". ", font_bold("Otherwise: "), font_red(paste0("Negative")), "\n", sep = "") cat(" ", i + 1, ". ", font_bold("Otherwise: "), font_red(paste0("Negative")), "\n", sep = "")
cat("\nUnmatched rows will return ", font_red("NA"), ".\n", sep = "") cat("\nUnmatched rows will return ", font_red("NA"), ".\n", sep = "")
if (isTRUE(attributes(x)$as_factor)) { if (isTRUE(attributes(x)$as_factor)) {
cat("Results will be of class <factor>, with ordered levels: ", paste0(attributes(x)$values, collapse = " < "), "\n", sep = "") cat("Results will be of class 'factor', with ordered levels: ", paste0(attributes(x)$values, collapse = " < "), "\n", sep = "")
} else { } else {
cat("Results will be of class <character>.\n") cat("Results will be of class 'character'.\n")
} }
} }

12
R/mic.R
View File

@ -84,7 +84,7 @@ valid_mic_levels <- c(
#' ``` #' ```
#' x <- random_mic(10) #' x <- random_mic(10)
#' x #' x
#' #> Class <mic> #' #> Class 'mic'
#' #> [1] 16 1 8 8 64 >=128 0.0625 32 32 16 #' #> [1] 16 1 8 8 64 >=128 0.0625 32 32 16
#' #'
#' is.factor(x) #' is.factor(x)
@ -101,7 +101,7 @@ valid_mic_levels <- c(
#' #'
#' ``` #' ```
#' x[x > 4] #' x[x > 4]
#' #> Class <mic> #' #> Class 'mic'
#' #> [1] 16 8 8 64 >=128 32 32 16 #' #> [1] 16 8 8 64 >=128 32 32 16
#' #'
#' df <- data.frame(x, hospital = "A") #' df <- data.frame(x, hospital = "A")
@ -119,7 +119,7 @@ valid_mic_levels <- c(
#' #'
#' Using [as.double()] or [as.numeric()] on MIC values will remove the operators and return a numeric vector. Do **not** use [as.integer()] on MIC values as by the \R convention on [factor]s, it will return the index of the factor levels (which is often useless for regular users). #' Using [as.double()] or [as.numeric()] on MIC values will remove the operators and return a numeric vector. Do **not** use [as.integer()] on MIC values as by the \R convention on [factor]s, it will return the index of the factor levels (which is often useless for regular users).
#' #'
#' Use [droplevels()] to drop unused levels. At default, it will return a plain factor. Use `droplevels(..., as.mic = TRUE)` to maintain the `<mic>` class. #' Use [droplevels()] to drop unused levels. At default, it will return a plain factor. Use `droplevels(..., as.mic = TRUE)` to maintain the `mic` class.
#' @return Ordered [factor] with additional class [`mic`], that in mathematical operations acts as decimal numbers. Bare in mind that the outcome of any mathematical operation on MICs will return a [numeric] value. #' @return Ordered [factor] with additional class [`mic`], that in mathematical operations acts as decimal numbers. Bare in mind that the outcome of any mathematical operation on MICs will return a [numeric] value.
#' @aliases mic #' @aliases mic
#' @export #' @export
@ -253,7 +253,7 @@ all_valid_mics <- function(x) {
} }
#' @rdname as.mic #' @rdname as.mic
#' @details `NA_mic_` is a missing value of the new `<mic>` class, analogous to e.g. base \R's [`NA_character_`][base::NA]. #' @details `NA_mic_` is a missing value of the new `mic` class, analogous to e.g. base \R's [`NA_character_`][base::NA].
#' @format NULL #' @format NULL
#' @export #' @export
NA_mic_ <- set_clean_class(factor(NA, levels = valid_mic_levels, ordered = TRUE), NA_mic_ <- set_clean_class(factor(NA, levels = valid_mic_levels, ordered = TRUE),
@ -282,7 +282,7 @@ as.numeric.mic <- function(x, ...) {
#' @rdname as.mic #' @rdname as.mic
#' @method droplevels mic #' @method droplevels mic
#' @param as.mic a [logical] to indicate whether the `<mic>` class should be kept, defaults to `FALSE` #' @param as.mic a [logical] to indicate whether the `mic` class should be kept, defaults to `FALSE`
#' @export #' @export
droplevels.mic <- function(x, as.mic = FALSE, ...) { droplevels.mic <- function(x, as.mic = FALSE, ...) {
x <- droplevels.factor(x, ...) x <- droplevels.factor(x, ...)
@ -313,7 +313,7 @@ type_sum.mic <- function(x, ...) {
#' @export #' @export
#' @noRd #' @noRd
print.mic <- function(x, ...) { print.mic <- function(x, ...) {
cat("Class <mic>", cat("Class 'mic'",
ifelse(length(levels(x)) < length(valid_mic_levels), font_red(" with dropped levels"), ""), ifelse(length(levels(x)) < length(valid_mic_levels), font_red(" with dropped levels"), ""),
"\n", "\n",
sep = "" sep = ""

4
R/mo.R
View File

@ -408,7 +408,7 @@ as.mo <- function(x,
} }
} }
# 'MO_CONS' and 'MO_COPS' are <mo> vectors created in R/_pre_commit_hook.R # 'MO_CONS' and 'MO_COPS' are 'mo' vectors created in R/_pre_commit_hook.R
out[out %in% MO_CONS] <- "B_STPHY_CONS" out[out %in% MO_CONS] <- "B_STPHY_CONS"
out[out %in% MO_COPS] <- "B_STPHY_COPS" out[out %in% MO_COPS] <- "B_STPHY_COPS"
if (Becker == "all") { if (Becker == "all") {
@ -635,7 +635,7 @@ get_skimmers.mo <- function(column) {
#' @export #' @export
#' @noRd #' @noRd
print.mo <- function(x, print.shortnames = FALSE, ...) { print.mo <- function(x, print.shortnames = FALSE, ...) {
cat("Class <mo>\n") cat("Class 'mo'\n")
x_names <- names(x) x_names <- names(x)
if (is.null(x_names) & print.shortnames == TRUE) { if (is.null(x_names) & print.shortnames == TRUE) {
x_names <- tryCatch(mo_shortname(x, ...), error = function(e) NULL) x_names <- tryCatch(mo_shortname(x, ...), error = function(e) NULL)

View File

@ -172,7 +172,7 @@
#' } #' }
mo_name <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_name <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_name") x <- find_mo_col(fn = "mo_name")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -194,7 +194,7 @@ mo_fullname <- mo_name
#' @export #' @export
mo_shortname <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_shortname <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_shortname") x <- find_mo_col(fn = "mo_shortname")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -235,7 +235,7 @@ mo_shortname <- function(x, language = get_AMR_locale(), keep_synonyms = getOpti
#' @export #' @export
mo_subspecies <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_subspecies <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_subspecies") x <- find_mo_col(fn = "mo_subspecies")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -249,7 +249,7 @@ mo_subspecies <- function(x, language = get_AMR_locale(), keep_synonyms = getOpt
#' @export #' @export
mo_species <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_species <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_species") x <- find_mo_col(fn = "mo_species")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -263,7 +263,7 @@ mo_species <- function(x, language = get_AMR_locale(), keep_synonyms = getOption
#' @export #' @export
mo_genus <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_genus <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_genus") x <- find_mo_col(fn = "mo_genus")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -277,7 +277,7 @@ mo_genus <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("
#' @export #' @export
mo_family <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_family <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_family") x <- find_mo_col(fn = "mo_family")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -291,7 +291,7 @@ mo_family <- function(x, language = get_AMR_locale(), keep_synonyms = getOption(
#' @export #' @export
mo_order <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_order <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_order") x <- find_mo_col(fn = "mo_order")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -305,7 +305,7 @@ mo_order <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("
#' @export #' @export
mo_class <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_class <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_class") x <- find_mo_col(fn = "mo_class")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -319,7 +319,7 @@ mo_class <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("
#' @export #' @export
mo_phylum <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_phylum <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_phylum") x <- find_mo_col(fn = "mo_phylum")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -333,7 +333,7 @@ mo_phylum <- function(x, language = get_AMR_locale(), keep_synonyms = getOption(
#' @export #' @export
mo_kingdom <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_kingdom <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_kingdom") x <- find_mo_col(fn = "mo_kingdom")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -351,7 +351,7 @@ mo_domain <- mo_kingdom
#' @export #' @export
mo_type <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_type <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_type") x <- find_mo_col(fn = "mo_type")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -368,7 +368,7 @@ mo_type <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("A
#' @export #' @export
mo_status <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_status <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_status") x <- find_mo_col(fn = "mo_status")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -382,7 +382,7 @@ mo_status <- function(x, language = get_AMR_locale(), keep_synonyms = getOption(
#' @export #' @export
mo_gramstain <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_gramstain <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_gramstain") x <- find_mo_col(fn = "mo_gramstain")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -417,7 +417,7 @@ mo_gramstain <- function(x, language = get_AMR_locale(), keep_synonyms = getOpti
#' @export #' @export
mo_is_gram_negative <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_is_gram_negative <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_is_gram_negative") x <- find_mo_col(fn = "mo_is_gram_negative")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -437,7 +437,7 @@ mo_is_gram_negative <- function(x, language = get_AMR_locale(), keep_synonyms =
#' @export #' @export
mo_is_gram_positive <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_is_gram_positive <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_is_gram_positive") x <- find_mo_col(fn = "mo_is_gram_positive")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -457,7 +457,7 @@ mo_is_gram_positive <- function(x, language = get_AMR_locale(), keep_synonyms =
#' @export #' @export
mo_is_yeast <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_is_yeast <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_is_yeast") x <- find_mo_col(fn = "mo_is_yeast")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -482,7 +482,7 @@ mo_is_yeast <- function(x, language = get_AMR_locale(), keep_synonyms = getOptio
#' @export #' @export
mo_is_intrinsic_resistant <- function(x, ab, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_is_intrinsic_resistant <- function(x, ab, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_is_intrinsic_resistant") x <- find_mo_col(fn = "mo_is_intrinsic_resistant")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -519,7 +519,7 @@ mo_is_intrinsic_resistant <- function(x, ab, language = get_AMR_locale(), keep_s
#' @export #' @export
mo_snomed <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_snomed <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_snomed") x <- find_mo_col(fn = "mo_snomed")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -533,7 +533,7 @@ mo_snomed <- function(x, language = get_AMR_locale(), keep_synonyms = getOption(
#' @export #' @export
mo_ref <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_ref <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_ref") x <- find_mo_col(fn = "mo_ref")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -547,7 +547,7 @@ mo_ref <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AM
#' @export #' @export
mo_authors <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_authors <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_authors") x <- find_mo_col(fn = "mo_authors")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -564,7 +564,7 @@ mo_authors <- function(x, language = get_AMR_locale(), keep_synonyms = getOption
#' @export #' @export
mo_year <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_year <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_year") x <- find_mo_col(fn = "mo_year")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -581,7 +581,7 @@ mo_year <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("A
#' @export #' @export
mo_lpsn <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_lpsn <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_lpsn") x <- find_mo_col(fn = "mo_lpsn")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -595,7 +595,7 @@ mo_lpsn <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("A
#' @export #' @export
mo_gbif <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_gbif <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_gbif") x <- find_mo_col(fn = "mo_gbif")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -609,7 +609,7 @@ mo_gbif <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("A
#' @export #' @export
mo_rank <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_rank <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_rank") x <- find_mo_col(fn = "mo_rank")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -623,7 +623,7 @@ mo_rank <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("A
#' @export #' @export
mo_taxonomy <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_taxonomy <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_taxonomy") x <- find_mo_col(fn = "mo_taxonomy")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -652,7 +652,7 @@ mo_taxonomy <- function(x, language = get_AMR_locale(), keep_synonyms = getOptio
#' @export #' @export
mo_synonyms <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_synonyms <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_synonyms") x <- find_mo_col(fn = "mo_synonyms")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -698,7 +698,7 @@ mo_current <- function(x, language = get_AMR_locale(), ...) {
#' @export #' @export
mo_info <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_info <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_info") x <- find_mo_col(fn = "mo_info")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -736,7 +736,7 @@ mo_info <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("A
#' @export #' @export
mo_url <- function(x, open = FALSE, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_url <- function(x, open = FALSE, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_url") x <- find_mo_col(fn = "mo_url")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
@ -775,7 +775,7 @@ mo_url <- function(x, open = FALSE, language = get_AMR_locale(), keep_synonyms =
#' @export #' @export
mo_property <- function(x, property = "fullname", language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_property <- function(x, property = "fullname", language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) { if (missing(x)) {
# this tries to find the data and an <mo> column # this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_property") x <- find_mo_col(fn = "mo_property")
} }
meet_criteria(x, allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)

View File

@ -75,7 +75,7 @@
#' #'
#' ``` #' ```
#' as.mo("lab_mo_ecoli") #' as.mo("lab_mo_ecoli")
#' #> Class <mo> #' #> Class 'mo'
#' #> [1] B_ESCHR_COLI #' #> [1] B_ESCHR_COLI
#' #'
#' mo_genus("lab_mo_kpneumoniae") #' mo_genus("lab_mo_kpneumoniae")
@ -85,7 +85,7 @@
#' as.mo(c("Escherichia coli", "E. coli", "lab_mo_ecoli")) #' as.mo(c("Escherichia coli", "E. coli", "lab_mo_ecoli"))
#' #> NOTE: Translation to one microorganism was guessed with uncertainty. #' #> NOTE: Translation to one microorganism was guessed with uncertainty.
#' #> Use mo_uncertainties() to review it. #' #> Use mo_uncertainties() to review it.
#' #> Class <mo> #' #> Class 'mo'
#' #> [1] B_ESCHR_COLI B_ESCHR_COLI B_ESCHR_COLI #' #> [1] B_ESCHR_COLI B_ESCHR_COLI B_ESCHR_COLI
#' ``` #' ```
#' #'
@ -108,7 +108,7 @@
#' #> NOTE: Updated mo_source file '/Users/me/mo_source.rds' (0.3 kB) from #' #> NOTE: Updated mo_source file '/Users/me/mo_source.rds' (0.3 kB) from
#' #> '/Users/me/Documents/ourcodes.xlsx' (9 kB), columns #' #> '/Users/me/Documents/ourcodes.xlsx' (9 kB), columns
#' #> "Organisation XYZ" and "mo" #' #> "Organisation XYZ" and "mo"
#' #> Class <mo> #' #> Class 'mo'
#' #> [1] B_ESCHR_COLI #' #> [1] B_ESCHR_COLI
#' #'
#' mo_genus("lab_Staph_aureus") #' mo_genus("lab_Staph_aureus")

View File

@ -38,7 +38,7 @@
#' @details The base \R function [sample()] is used for generating values. #' @details The base \R function [sample()] is used for generating values.
#' #'
#' Generated values are based on the EUCAST `r max(as.integer(gsub("[^0-9]", "", subset(rsi_translation, guideline %like% "EUCAST")$guideline)))` guideline as implemented in the [rsi_translation] data set. To create specific generated values per bug or drug, set the `mo` and/or `ab` argument. #' Generated values are based on the EUCAST `r max(as.integer(gsub("[^0-9]", "", subset(rsi_translation, guideline %like% "EUCAST")$guideline)))` guideline as implemented in the [rsi_translation] data set. To create specific generated values per bug or drug, set the `mo` and/or `ab` argument.
#' @return class `<mic>` for [random_mic()] (see [as.mic()]) and class `<disk>` for [random_disk()] (see [as.disk()]) #' @return class `mic` for [random_mic()] (see [as.mic()]) and class `disk` for [random_disk()] (see [as.disk()])
#' @name random #' @name random
#' @rdname random #' @rdname random
#' @export #' @export

12
R/rsi.R
View File

@ -82,7 +82,7 @@
#' #'
#' ### Other #' ### Other
#' #'
#' The function [is.rsi()] detects if the input contains class `<rsi>`. If the input is a [data.frame], it iterates over all columns and returns a [logical] vector. #' The function [is.rsi()] detects if the input contains class `rsi`. If the input is a [data.frame], it iterates over all columns and returns a [logical] vector.
#' #'
#' The function [is.rsi.eligible()] returns `TRUE` when a columns contains at most 5% invalid antimicrobial interpretations (not S and/or I and/or R), and `FALSE` otherwise. The threshold of 5% can be set with the `threshold` argument. If the input is a [data.frame], it iterates over all columns and returns a [logical] vector. #' The function [is.rsi.eligible()] returns `TRUE` when a columns contains at most 5% invalid antimicrobial interpretations (not S and/or I and/or R), and `FALSE` otherwise. The threshold of 5% can be set with the `threshold` argument. If the input is a [data.frame], it iterates over all columns and returns a [logical] vector.
#' @section Interpretation of R and S/I: #' @section Interpretation of R and S/I:
@ -96,7 +96,7 @@
#' A microorganism is categorised as *Susceptible, Increased exposure* when there is a high likelihood of therapeutic success because exposure to the agent is increased by adjusting the dosing regimen or by its concentration at the site of infection. #' A microorganism is categorised as *Susceptible, Increased exposure* when there is a high likelihood of therapeutic success because exposure to the agent is increased by adjusting the dosing regimen or by its concentration at the site of infection.
#' #'
#' This AMR package honours this (new) insight. Use [susceptibility()] (equal to [proportion_SI()]) to determine antimicrobial susceptibility and [count_susceptible()] (equal to [count_SI()]) to count susceptible isolates. #' This AMR package honours this (new) insight. Use [susceptibility()] (equal to [proportion_SI()]) to determine antimicrobial susceptibility and [count_susceptible()] (equal to [count_SI()]) to count susceptible isolates.
#' @return Ordered [factor] with new class `<rsi>` #' @return Ordered [factor] with new class `rsi`
#' @aliases rsi #' @aliases rsi
#' @export #' @export
#' @seealso [as.mic()], [as.disk()], [as.mo()] #' @seealso [as.mic()], [as.disk()], [as.mo()]
@ -198,7 +198,7 @@ as.rsi <- function(x, ...) {
} }
#' @rdname as.rsi #' @rdname as.rsi
#' @details `NA_rsi_` is a missing value of the new `<rsi>` class, analogous to e.g. base \R's [`NA_character_`][base::NA]. #' @details `NA_rsi_` is a missing value of the new `rsi` class, analogous to e.g. base \R's [`NA_character_`][base::NA].
#' @export #' @export
NA_rsi_ <- set_clean_class(factor(NA, levels = c("S", "I", "R"), ordered = TRUE), NA_rsi_ <- set_clean_class(factor(NA, levels = c("S", "I", "R"), ordered = TRUE),
new_class = c("rsi", "ordered", "factor") new_class = c("rsi", "ordered", "factor")
@ -609,7 +609,7 @@ as.rsi.data.frame <- function(x,
} else if (!is.rsi(x.bak[, ab_cols[i], drop = TRUE])) { } else if (!is.rsi(x.bak[, ab_cols[i], drop = TRUE])) {
show_message <- TRUE show_message <- TRUE
# only print message if class not already set # only print message if class not already set
message_("=> Assigning class <rsi> to already clean column '", font_bold(ab), "' (", message_("=> Assigning class 'rsi' to already clean column '", font_bold(ab), "' (",
ifelse(ab_coerced != toupper(ab), paste0(ab_coerced, ", "), ""), ifelse(ab_coerced != toupper(ab), paste0(ab_coerced, ", "), ""),
ab_name(ab_coerced, tolower = TRUE), ")... ", ab_name(ab_coerced, tolower = TRUE), ")... ",
appendLF = FALSE, appendLF = FALSE,
@ -702,7 +702,7 @@ as_rsi_method <- function(method_short,
) )
} }
if (is.null(mo)) { if (is.null(mo)) {
stop_("No information was supplied about the microorganisms (missing argument `mo` and no column of class <mo> found). See ?as.rsi.\n\n", stop_("No information was supplied about the microorganisms (missing argument `mo` and no column of class 'mo' found). See ?as.rsi.\n\n",
"To transform certain columns with e.g. mutate(), use `data %>% mutate(across(..., as.rsi, mo = x))`, where x is your column with microorganisms.\n", "To transform certain columns with e.g. mutate(), use `data %>% mutate(across(..., as.rsi, mo = x))`, where x is your column with microorganisms.\n",
"To tranform all ", method_long, " in a data set, use `data %>% as.rsi()` or `data %>% mutate(across(where(is.", method_short, "), as.rsi))`.", "To tranform all ", method_long, " in a data set, use `data %>% as.rsi()` or `data %>% mutate(across(where(is.", method_short, "), as.rsi))`.",
call = FALSE call = FALSE
@ -1086,7 +1086,7 @@ get_skimmers.rsi <- function(column) {
#' @export #' @export
#' @noRd #' @noRd
print.rsi <- function(x, ...) { print.rsi <- function(x, ...) {
cat("Class <rsi>\n") cat("Class 'rsi'\n")
print(as.character(x), quote = FALSE) print(as.character(x), quote = FALSE)
} }

View File

@ -120,7 +120,7 @@ rsi_calc <- function(...,
if (is.data.frame(x)) { if (is.data.frame(x)) {
rsi_integrity_check <- character(0) rsi_integrity_check <- character(0)
for (i in seq_len(ncol(x))) { for (i in seq_len(ncol(x))) {
# check integrity of columns: force <rsi> class # check integrity of columns: force 'rsi' class
if (!is.rsi(x[, i, drop = TRUE])) { if (!is.rsi(x[, i, drop = TRUE])) {
rsi_integrity_check <- c(rsi_integrity_check, as.character(x[, i, drop = TRUE])) rsi_integrity_check <- c(rsi_integrity_check, as.character(x[, i, drop = TRUE]))
x[, i] <- suppressWarnings(as.rsi(x[, i, drop = TRUE])) # warning will be given later x[, i] <- suppressWarnings(as.rsi(x[, i, drop = TRUE])) # warning will be given later
@ -160,7 +160,7 @@ rsi_calc <- function(...,
if (print_warning == TRUE) { if (print_warning == TRUE) {
if (message_not_thrown_before("rsi_calc")) { if (message_not_thrown_before("rsi_calc")) {
warning_("Increase speed by transforming to class <rsi> on beforehand:\n", warning_("Increase speed by transforming to class 'rsi' on beforehand:\n",
" your_data %>% mutate_if(is.rsi.eligible, as.rsi)\n", " your_data %>% mutate_if(is.rsi.eligible, as.rsi)\n",
" your_data %>% mutate(across(where(is.rsi.eligible), as.rsi))", " your_data %>% mutate(across(where(is.rsi.eligible), as.rsi))",
call = FALSE call = FALSE
@ -344,7 +344,7 @@ rsi_calc_df <- function(type, # "proportion", "count" or "both"
} else if (isTRUE(combine_IR)) { } else if (isTRUE(combine_IR)) {
out$interpretation <- factor(out$interpretation, levels = c("S", "IR"), ordered = TRUE) out$interpretation <- factor(out$interpretation, levels = c("S", "IR"), ordered = TRUE)
} else { } else {
# don't use as.rsi() here, as it would add the class <rsi> and we would like # don't use as.rsi() here, as it would add the class 'rsi' and we would like
# the same data structure as output, regardless of input # the same data structure as output, regardless of input
out$interpretation <- factor(out$interpretation, levels = c("S", "I", "R"), ordered = TRUE) out$interpretation <- factor(out$interpretation, levels = c("S", "I", "R"), ordered = TRUE)
} }

View File

@ -281,6 +281,6 @@ expect_warning(mdro(example_isolates,
# print groups # print groups
if (AMR:::pkg_is_available("dplyr", min_version = "1.0.0")) { if (AMR:::pkg_is_available("dplyr", min_version = "1.0.0")) {
expect_stdout(x <- mdro(example_isolates %>% group_by(ward), info = TRUE)) expect_stdout(x <- mdro(example_isolates %>% group_by(ward), info = TRUE, pct_required_classes = 0))
expect_stdout(x <- mdro(example_isolates %>% group_by(ward), guideline = custom, info = TRUE)) expect_stdout(x <- mdro(example_isolates %>% group_by(ward), guideline = custom, info = TRUE))
} }

View File

@ -297,7 +297,7 @@ expect_equal(as.character(as.mo("con")), "UNKNOWN")
expect_equal(as.character(as.mo("xxx")), NA_character_) expect_equal(as.character(as.mo("xxx")), NA_character_)
expect_equal(as.character(as.mo(c("xxx", "con", "eco"))), c(NA_character_, "UNKNOWN", "B_ESCHR_COLI")) expect_equal(as.character(as.mo(c("xxx", "con", "eco"))), c(NA_character_, "UNKNOWN", "B_ESCHR_COLI"))
expect_equal( expect_equal(
as.character(as.mo(c("other", "none", "unknown"))), as.character(suppressWarnings(as.mo(c("other", "none", "unknown")))),
rep("UNKNOWN", 3) rep("UNKNOWN", 3)
) )

View File

@ -84,9 +84,10 @@ for (l in AMR:::LANGUAGES_SUPPORTED[-1]) {
expect_false(mo_gramstain("Escherichia coli", language = l) == gr, info = paste("Gram-stain in language", l)) expect_false(mo_gramstain("Escherichia coli", language = l) == gr, info = paste("Gram-stain in language", l))
} }
# test languages
expect_error(mo_gramstain("Escherichia coli", language = "UNKNOWN")) expect_error(mo_gramstain("Escherichia coli", language = "UNKNOWN"))
dutch <- mo_name(microorganisms$fullname[which(microorganisms$fullname %unlike% "unknown|coagulase|Fungi")], language = "nl", keep_synonyms = TRUE) # should be transformable to English again dutch <- suppressWarnings(mo_name(microorganisms$fullname[which(microorganisms$fullname %unlike% "unknown|coagulase|Fungi")], language = "nl", keep_synonyms = TRUE)) # should be transformable to English again
expect_identical(mo_name(dutch, language = NULL, keep_synonyms = TRUE), expect_identical(suppressWarnings(mo_name(dutch, language = NULL, keep_synonyms = TRUE)),
microorganisms$fullname[which(microorganisms$fullname %unlike% "unknown|coagulase|Fungi")]) # gigantic test - will run ALL names microorganisms$fullname[which(microorganisms$fullname %unlike% "unknown|coagulase|Fungi")]) # gigantic test - will run ALL names
# manual property function # manual property function

View File

@ -102,7 +102,7 @@ not_intrinsic_resistant(
\arguments{ \arguments{
\item{ab_class}{an antimicrobial class or a part of it, such as \code{"carba"} and \code{"carbapenems"}. The columns \code{group}, \code{atc_group1} and \code{atc_group2} of the \link{antibiotics} data set will be searched (case-insensitive) for this value.} \item{ab_class}{an antimicrobial class or a part of it, such as \code{"carba"} and \code{"carbapenems"}. The columns \code{group}, \code{atc_group1} and \code{atc_group2} of the \link{antibiotics} data set will be searched (case-insensitive) for this value.}
\item{only_rsi_columns}{a \link{logical} to indicate whether only columns of class \verb{<rsi>} must be selected (defaults to \code{FALSE}), see \code{\link[=as.rsi]{as.rsi()}}} \item{only_rsi_columns}{a \link{logical} to indicate whether only columns of class \code{rsi} must be selected (defaults to \code{FALSE}), see \code{\link[=as.rsi]{as.rsi()}}}
\item{only_treatable}{a \link{logical} to indicate whether agents that are only for laboratory tests should be excluded (defaults to \code{TRUE}), such as gentamicin-high (\code{GEH}) and imipenem/EDTA (\code{IPE})} \item{only_treatable}{a \link{logical} to indicate whether agents that are only for laboratory tests should be excluded (defaults to \code{TRUE}), such as gentamicin-high (\code{GEH}) and imipenem/EDTA (\code{IPE})}

View File

@ -89,12 +89,13 @@ ab_atc("seephthriaaksone") # and even this works
# they use as.ab() internally: # they use as.ab() internally:
ab_name("J01FA01") # "Erythromycin" ab_name("J01FA01") # "Erythromycin"
ab_name("eryt") # "Erythromycin" ab_name("eryt") # "Erythromycin"
\donttest{ \donttest{
if (require("dplyr")) { if (require("dplyr")) {
# you can quickly rename <rsi> columns using dplyr >= 1.0.0: # you can quickly rename 'rsi' columns using set_ab_names() with dplyr:
example_isolates \%>\% example_isolates \%>\%
rename_with(as.ab, where(is.rsi)) set_ab_names(where(is.rsi), property = "atc")
} }
} }
} }

View File

@ -31,7 +31,7 @@ This transforms a vector to a new class \code{\link{disk}}, which is a disk diff
\details{ \details{
Interpret disk values as RSI values with \code{\link[=as.rsi]{as.rsi()}}. It supports guidelines from EUCAST and CLSI. Interpret disk values as RSI values with \code{\link[=as.rsi]{as.rsi()}}. It supports guidelines from EUCAST and CLSI.
\code{NA_disk_} is a missing value of the new \verb{<disk>} class. \code{NA_disk_} is a missing value of the new \code{disk} class.
} }
\examples{ \examples{
# transform existing disk zones to the `disk` class (using base R) # transform existing disk zones to the `disk` class (using base R)

View File

@ -22,7 +22,7 @@ is.mic(x)
\item{na.rm}{a \link{logical} indicating whether missing values should be removed} \item{na.rm}{a \link{logical} indicating whether missing values should be removed}
\item{as.mic}{a \link{logical} to indicate whether the \verb{<mic>} class should be kept, defaults to \code{FALSE}} \item{as.mic}{a \link{logical} to indicate whether the \code{mic} class should be kept, defaults to \code{FALSE}}
\item{...}{arguments passed on to methods} \item{...}{arguments passed on to methods}
} }
@ -39,7 +39,7 @@ This class for MIC values is a quite a special data type: formally it is an orde
\if{html}{\out{<div class="sourceCode">}}\preformatted{x <- random_mic(10) \if{html}{\out{<div class="sourceCode">}}\preformatted{x <- random_mic(10)
x x
#> Class <mic> #> Class 'mic'
#> [1] 16 1 8 8 64 >=128 0.0625 32 32 16 #> [1] 16 1 8 8 64 >=128 0.0625 32 32 16
is.factor(x) is.factor(x)
@ -55,7 +55,7 @@ median(x)
This makes it possible to maintain operators that often come with MIC values, such ">=" and "<=", even when filtering using \link{numeric} values in data analysis, e.g.: This makes it possible to maintain operators that often come with MIC values, such ">=" and "<=", even when filtering using \link{numeric} values in data analysis, e.g.:
\if{html}{\out{<div class="sourceCode">}}\preformatted{x[x > 4] \if{html}{\out{<div class="sourceCode">}}\preformatted{x[x > 4]
#> Class <mic> #> Class 'mic'
#> [1] 16 8 8 64 >=128 32 32 16 #> [1] 16 8 8 64 >=128 32 32 16
df <- data.frame(x, hospital = "A") df <- data.frame(x, hospital = "A")
@ -73,9 +73,9 @@ The following \link[=groupGeneric]{generic functions} are implemented for the MI
Using \code{\link[=as.double]{as.double()}} or \code{\link[=as.numeric]{as.numeric()}} on MIC values will remove the operators and return a numeric vector. Do \strong{not} use \code{\link[=as.integer]{as.integer()}} on MIC values as by the \R convention on \link{factor}s, it will return the index of the factor levels (which is often useless for regular users). Using \code{\link[=as.double]{as.double()}} or \code{\link[=as.numeric]{as.numeric()}} on MIC values will remove the operators and return a numeric vector. Do \strong{not} use \code{\link[=as.integer]{as.integer()}} on MIC values as by the \R convention on \link{factor}s, it will return the index of the factor levels (which is often useless for regular users).
Use \code{\link[=droplevels]{droplevels()}} to drop unused levels. At default, it will return a plain factor. Use \code{droplevels(..., as.mic = TRUE)} to maintain the \verb{<mic>} class. Use \code{\link[=droplevels]{droplevels()}} to drop unused levels. At default, it will return a plain factor. Use \code{droplevels(..., as.mic = TRUE)} to maintain the \code{mic} class.
\code{NA_mic_} is a missing value of the new \verb{<mic>} class, analogous to e.g. base \R's \code{\link[base:NA]{NA_character_}}. \code{NA_mic_} is a missing value of the new \code{mic} class, analogous to e.g. base \R's \code{\link[base:NA]{NA_character_}}.
} }
\examples{ \examples{
mic_data <- as.mic(c(">=32", "1.0", "1", "1.00", 8, "<=0.128", "8", "16", "16")) mic_data <- as.mic(c(">=32", "1.0", "1", "1.00", 8, "<=0.128", "8", "16", "16"))

View File

@ -86,7 +86,7 @@ rsi_interpretation_history(clean = FALSE)
\item{clean}{a \link{logical} to indicate whether previously stored results should be forgotten after returning the 'logbook' with results} \item{clean}{a \link{logical} to indicate whether previously stored results should be forgotten after returning the 'logbook' with results}
} }
\value{ \value{
Ordered \link{factor} with new class \verb{<rsi>} Ordered \link{factor} with new class \code{rsi}
} }
\description{ \description{
Interpret minimum inhibitory concentration (MIC) values and disk diffusion diameters according to EUCAST or CLSI, or clean up existing R/SI values. This transforms the input to a new class \code{\link{rsi}}, which is an ordered \link{factor} with levels \verb{S < I < R}. Interpret minimum inhibitory concentration (MIC) values and disk diffusion diameters according to EUCAST or CLSI, or clean up existing R/SI values. This transforms the input to a new class \code{\link{rsi}}, which is an ordered \link{factor} with levels \verb{S < I < R}.
@ -139,12 +139,12 @@ The repository of this package \href{https://github.com/msberends/AMR/blob/main/
\subsection{Other}{ \subsection{Other}{
The function \code{\link[=is.rsi]{is.rsi()}} detects if the input contains class \verb{<rsi>}. If the input is a \link{data.frame}, it iterates over all columns and returns a \link{logical} vector. The function \code{\link[=is.rsi]{is.rsi()}} detects if the input contains class \code{rsi}. If the input is a \link{data.frame}, it iterates over all columns and returns a \link{logical} vector.
The function \code{\link[=is.rsi.eligible]{is.rsi.eligible()}} returns \code{TRUE} when a columns contains at most 5\% invalid antimicrobial interpretations (not S and/or I and/or R), and \code{FALSE} otherwise. The threshold of 5\% can be set with the \code{threshold} argument. If the input is a \link{data.frame}, it iterates over all columns and returns a \link{logical} vector. The function \code{\link[=is.rsi.eligible]{is.rsi.eligible()}} returns \code{TRUE} when a columns contains at most 5\% invalid antimicrobial interpretations (not S and/or I and/or R), and \code{FALSE} otherwise. The threshold of 5\% can be set with the \code{threshold} argument. If the input is a \link{data.frame}, it iterates over all columns and returns a \link{logical} vector.
} }
\code{NA_rsi_} is a missing value of the new \verb{<rsi>} class, analogous to e.g. base \R's \code{\link[base:NA]{NA_character_}}. \code{NA_rsi_} is a missing value of the new \code{rsi} class, analogous to e.g. base \R's \code{\link[base:NA]{NA_character_}}.
} }
\section{Interpretation of R and S/I}{ \section{Interpretation of R and S/I}{

View File

@ -52,7 +52,7 @@ eucast_dosage(ab, administration = "iv", version_breakpoints = 11)
\item{ampc_cephalosporin_resistance}{a \link{character} value that should be applied to cefotaxime, ceftriaxone and ceftazidime for AmpC de-repressed cephalosporin-resistant mutants, defaults to \code{NA}. Currently only works when \code{version_expertrules} is \code{3.2} and higher; these version of '\emph{EUCAST Expert Rules on Enterobacterales}' state that results of cefotaxime, ceftriaxone and ceftazidime should be reported with a note, or results should be suppressed (emptied) for these three agents. A value of \code{NA} (the default) for this argument will remove results for these three agents, while e.g. a value of \code{"R"} will make the results for these agents resistant. Use \code{NULL} or \code{FALSE} to not alter results for these three agents of AmpC de-repressed cephalosporin-resistant mutants. Using \code{TRUE} is equal to using \code{"R"}. \cr For \emph{EUCAST Expert Rules} v3.2, this rule applies to: \emph{Citrobacter braakii}, \emph{Citrobacter freundii}, \emph{Citrobacter gillenii}, \emph{Citrobacter murliniae}, \emph{Citrobacter rodenticum}, \emph{Citrobacter sedlakii}, \emph{Citrobacter werkmanii}, \emph{Citrobacter youngae}, \emph{Enterobacter}, \emph{Hafnia alvei}, \emph{Klebsiella aerogenes}, \emph{Morganella morganii}, \emph{Providencia} and \emph{Serratia}.} \item{ampc_cephalosporin_resistance}{a \link{character} value that should be applied to cefotaxime, ceftriaxone and ceftazidime for AmpC de-repressed cephalosporin-resistant mutants, defaults to \code{NA}. Currently only works when \code{version_expertrules} is \code{3.2} and higher; these version of '\emph{EUCAST Expert Rules on Enterobacterales}' state that results of cefotaxime, ceftriaxone and ceftazidime should be reported with a note, or results should be suppressed (emptied) for these three agents. A value of \code{NA} (the default) for this argument will remove results for these three agents, while e.g. a value of \code{"R"} will make the results for these agents resistant. Use \code{NULL} or \code{FALSE} to not alter results for these three agents of AmpC de-repressed cephalosporin-resistant mutants. Using \code{TRUE} is equal to using \code{"R"}. \cr For \emph{EUCAST Expert Rules} v3.2, this rule applies to: \emph{Citrobacter braakii}, \emph{Citrobacter freundii}, \emph{Citrobacter gillenii}, \emph{Citrobacter murliniae}, \emph{Citrobacter rodenticum}, \emph{Citrobacter sedlakii}, \emph{Citrobacter werkmanii}, \emph{Citrobacter youngae}, \emph{Enterobacter}, \emph{Hafnia alvei}, \emph{Klebsiella aerogenes}, \emph{Morganella morganii}, \emph{Providencia} and \emph{Serratia}.}
\item{only_rsi_columns}{a \link{logical} to indicate whether only antibiotic columns must be detected that were transformed to class \verb{<rsi>} (see \code{\link[=as.rsi]{as.rsi()}}) on beforehand (defaults to \code{FALSE})} \item{only_rsi_columns}{a \link{logical} to indicate whether only antibiotic columns must be detected that were transformed to class \code{rsi} (see \code{\link[=as.rsi]{as.rsi()}}) on beforehand (defaults to \code{FALSE})}
\item{custom_rules}{custom rules to apply, created with \code{\link[=custom_eucast_rules]{custom_eucast_rules()}}} \item{custom_rules}{custom rules to apply, created with \code{\link[=custom_eucast_rules]{custom_eucast_rules()}}}

View File

@ -82,7 +82,7 @@ filter_first_isolate(
\item{include_unknown}{a \link{logical} to indicate whether 'unknown' microorganisms should be included too, i.e. microbial code \code{"UNKNOWN"}, which defaults to \code{FALSE}. For WHONET users, this means that all records with organism code \code{"con"} (\emph{contamination}) will be excluded at default. Isolates with a microbial ID of \code{NA} will always be excluded as first isolate.} \item{include_unknown}{a \link{logical} to indicate whether 'unknown' microorganisms should be included too, i.e. microbial code \code{"UNKNOWN"}, which defaults to \code{FALSE}. For WHONET users, this means that all records with organism code \code{"con"} (\emph{contamination}) will be excluded at default. Isolates with a microbial ID of \code{NA} will always be excluded as first isolate.}
\item{include_untested_rsi}{a \link{logical} to indicate whether also rows without antibiotic results are still eligible for becoming a first isolate. Use \code{include_untested_rsi = FALSE} to always return \code{FALSE} for such rows. This checks the data set for columns of class \verb{<rsi>} and consequently requires transforming columns with antibiotic results using \code{\link[=as.rsi]{as.rsi()}} first.} \item{include_untested_rsi}{a \link{logical} to indicate whether also rows without antibiotic results are still eligible for becoming a first isolate. Use \code{include_untested_rsi = FALSE} to always return \code{FALSE} for such rows. This checks the data set for columns of class \code{rsi} and consequently requires transforming columns with antibiotic results using \code{\link[=as.rsi]{as.rsi()}} first.}
\item{...}{arguments passed on to \code{\link[=first_isolate]{first_isolate()}} when using \code{\link[=filter_first_isolate]{filter_first_isolate()}}, otherwise arguments passed on to \code{\link[=key_antimicrobials]{key_antimicrobials()}} (such as \code{universal}, \code{gram_negative}, \code{gram_positive})} \item{...}{arguments passed on to \code{\link[=first_isolate]{first_isolate()}} when using \code{\link[=filter_first_isolate]{filter_first_isolate()}}, otherwise arguments passed on to \code{\link[=key_antimicrobials]{key_antimicrobials()}} (such as \code{universal}, \code{gram_negative}, \code{gram_positive})}
} }

View File

@ -18,7 +18,7 @@ guess_ab_col(
\item{verbose}{a \link{logical} to indicate whether additional info should be printed} \item{verbose}{a \link{logical} to indicate whether additional info should be printed}
\item{only_rsi_columns}{a \link{logical} to indicate whether only antibiotic columns must be detected that were transformed to class \verb{<rsi>} (see \code{\link[=as.rsi]{as.rsi()}}) on beforehand (defaults to \code{FALSE})} \item{only_rsi_columns}{a \link{logical} to indicate whether only antibiotic columns must be detected that were transformed to class \code{rsi} (see \code{\link[=as.rsi]{as.rsi()}}) on beforehand (defaults to \code{FALSE})}
} }
\value{ \value{
A column name of \code{x}, or \code{NULL} when no result is found. A column name of \code{x}, or \code{NULL} when no result is found.

View File

@ -45,7 +45,7 @@ antimicrobials_equal(
\item{antifungal}{names of antifungal agents for \strong{fungi}, case-insensitive. Set to \code{NULL} to ignore. See \emph{Details} for the default agents.} \item{antifungal}{names of antifungal agents for \strong{fungi}, case-insensitive. Set to \code{NULL} to ignore. See \emph{Details} for the default agents.}
\item{only_rsi_columns}{a \link{logical} to indicate whether only columns must be included that were transformed to class \verb{<rsi>} (see \code{\link[=as.rsi]{as.rsi()}}) on beforehand (defaults to \code{FALSE})} \item{only_rsi_columns}{a \link{logical} to indicate whether only columns must be included that were transformed to class \code{rsi} (see \code{\link[=as.rsi]{as.rsi()}}) on beforehand (defaults to \code{FALSE})}
\item{...}{ignored, only in place to allow future extensions} \item{...}{ignored, only in place to allow future extensions}

View File

@ -58,7 +58,7 @@ eucast_exceptional_phenotypes(x = NULL, only_rsi_columns = FALSE, ...)
\item{verbose}{a \link{logical} to turn Verbose mode on and off (default is off). In Verbose mode, the function does not return the MDRO results, but instead returns a data set in logbook form with extensive info about which isolates would be MDRO-positive, or why they are not.} \item{verbose}{a \link{logical} to turn Verbose mode on and off (default is off). In Verbose mode, the function does not return the MDRO results, but instead returns a data set in logbook form with extensive info about which isolates would be MDRO-positive, or why they are not.}
\item{only_rsi_columns}{a \link{logical} to indicate whether only antibiotic columns must be detected that were transformed to class \verb{<rsi>} (see \code{\link[=as.rsi]{as.rsi()}}) on beforehand (defaults to \code{FALSE})} \item{only_rsi_columns}{a \link{logical} to indicate whether only antibiotic columns must be detected that were transformed to class \code{rsi} (see \code{\link[=as.rsi]{as.rsi()}}) on beforehand (defaults to \code{FALSE})}
\item{...}{in case of \code{\link[=custom_mdro_guideline]{custom_mdro_guideline()}}: a set of rules, see section \emph{Using Custom Guidelines} below. Otherwise: column name of an antibiotic, see section \emph{Antibiotics} below.} \item{...}{in case of \code{\link[=custom_mdro_guideline]{custom_mdro_guideline()}}: a set of rules, see section \emph{Using Custom Guidelines} below. Otherwise: column name of an antibiotic, see section \emph{Antibiotics} below.}

View File

@ -60,7 +60,7 @@ It has now created a file \code{"~/mo_source.rds"} with the contents of our Exce
And now we can use it in our functions: And now we can use it in our functions:
\if{html}{\out{<div class="sourceCode">}}\preformatted{as.mo("lab_mo_ecoli") \if{html}{\out{<div class="sourceCode">}}\preformatted{as.mo("lab_mo_ecoli")
#> Class <mo> #> Class 'mo'
#> [1] B_ESCHR_COLI #> [1] B_ESCHR_COLI
mo_genus("lab_mo_kpneumoniae") mo_genus("lab_mo_kpneumoniae")
@ -70,7 +70,7 @@ mo_genus("lab_mo_kpneumoniae")
as.mo(c("Escherichia coli", "E. coli", "lab_mo_ecoli")) as.mo(c("Escherichia coli", "E. coli", "lab_mo_ecoli"))
#> NOTE: Translation to one microorganism was guessed with uncertainty. #> NOTE: Translation to one microorganism was guessed with uncertainty.
#> Use mo_uncertainties() to review it. #> Use mo_uncertainties() to review it.
#> Class <mo> #> Class 'mo'
#> [1] B_ESCHR_COLI B_ESCHR_COLI B_ESCHR_COLI #> [1] B_ESCHR_COLI B_ESCHR_COLI B_ESCHR_COLI
}\if{html}{\out{</div>}} }\if{html}{\out{</div>}}
@ -91,7 +91,7 @@ If we edit the Excel file by, let's say, adding row 4 like this:
#> NOTE: Updated mo_source file '/Users/me/mo_source.rds' (0.3 kB) from #> NOTE: Updated mo_source file '/Users/me/mo_source.rds' (0.3 kB) from
#> '/Users/me/Documents/ourcodes.xlsx' (9 kB), columns #> '/Users/me/Documents/ourcodes.xlsx' (9 kB), columns
#> "Organisation XYZ" and "mo" #> "Organisation XYZ" and "mo"
#> Class <mo> #> Class 'mo'
#> [1] B_ESCHR_COLI #> [1] B_ESCHR_COLI
mo_genus("lab_Staph_aureus") mo_genus("lab_Staph_aureus")

View File

@ -25,7 +25,7 @@ random_rsi(size = NULL, prob_RSI = c(0.33, 0.33, 0.33), ...)
\item{prob_RSI}{a vector of length 3: the probabilities for "R" (1st value), "S" (2nd value) and "I" (3rd value)} \item{prob_RSI}{a vector of length 3: the probabilities for "R" (1st value), "S" (2nd value) and "I" (3rd value)}
} }
\value{ \value{
class \verb{<mic>} for \code{\link[=random_mic]{random_mic()}} (see \code{\link[=as.mic]{as.mic()}}) and class \verb{<disk>} for \code{\link[=random_disk]{random_disk()}} (see \code{\link[=as.disk]{as.disk()}}) class \code{mic} for \code{\link[=random_mic]{random_mic()}} (see \code{\link[=as.mic]{as.mic()}}) and class \code{disk} for \code{\link[=random_disk]{random_disk()}} (see \code{\link[=as.disk]{as.disk()}})
} }
\description{ \description{
These functions can be used for generating random MIC values and disk diffusion diameters, for AMR data analysis practice. By providing a microorganism and antimicrobial agent, the generated results will reflect reality as much as possible. These functions can be used for generating random MIC values and disk diffusion diameters, for AMR data analysis practice. By providing a microorganism and antimicrobial agent, the generated results will reflect reality as much as possible.