diff --git a/DESCRIPTION b/DESCRIPTION
index e80cb630..e54f581e 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,5 +1,5 @@
Package: AMR
-Version: 1.4.0.9006
+Version: 1.4.0.9007
Date: 2020-10-21
Title: Antimicrobial Resistance Analysis
Authors@R: c(
diff --git a/NEWS.md b/NEWS.md
index 656c7fd2..f9123a95 100755
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,8 +1,9 @@
-# AMR 1.4.0.9006
+# AMR 1.4.0.9007
## Last updated: 21 October 2020
### New
* Functions `is_gram_negative()` and `is_gram_positive()` as wrappers around `mo_gramstain()`. They always return `TRUE` or `FALSE`, thus always return `FALSE` for species outside the taxonomic kingdom of Bacteria.
+* Functions `%not_like%` and `%like_perl%` as wrappers around `%like%`.
### Changed
* For all function parameters in the code, it is now defined what the exact type of user input should be (inspired by the [`typed`](https://github.com/moodymudskipper/typed) package). If the user input for a certain function does not meet the requirements for a specific parameter (such as the class or length), an informative error will be thrown. This makes the package more robust and the use of it more reproducible and reliable. In total, more than 400 arguments were defined.
diff --git a/R/first_isolate.R b/R/first_isolate.R
index 51e72fdf..77436ead 100755
--- a/R/first_isolate.R
+++ b/R/first_isolate.R
@@ -144,8 +144,14 @@ first_isolate <- function(x,
meet_criteria(col_patient_id, allow_class = "character", has_length = 1, allow_NULL = TRUE, is_in = colnames(x))
meet_criteria(col_mo, allow_class = "character", has_length = 1, allow_NULL = TRUE, is_in = colnames(x))
meet_criteria(col_testcode, allow_class = "character", has_length = 1, allow_NULL = TRUE, is_in = colnames(x))
+ if (isFALSE(col_specimen)) {
+ col_specimen <- NULL
+ }
meet_criteria(col_specimen, allow_class = "character", has_length = 1, allow_NULL = TRUE, is_in = colnames(x))
meet_criteria(col_icu, allow_class = "character", has_length = 1, allow_NULL = TRUE, is_in = colnames(x))
+ if (isFALSE(col_keyantibiotics)) {
+ col_keyantibiotics <- NULL
+ }
meet_criteria(col_keyantibiotics, allow_class = "character", has_length = 1, allow_NULL = TRUE, is_in = colnames(x))
meet_criteria(episode_days, allow_class = c("numeric", "integer"), has_length = 1)
meet_criteria(testcodes_exclude, allow_class = "character", allow_NULL = TRUE)
@@ -206,17 +212,11 @@ first_isolate <- function(x,
if (is.null(col_keyantibiotics)) {
col_keyantibiotics <- search_type_in_df(x = x, type = "keyantibiotics")
}
- if (isFALSE(col_keyantibiotics)) {
- col_keyantibiotics <- NULL
- }
-
+
# -- specimen
if (is.null(col_specimen) & !is.null(specimen_group)) {
col_specimen <- search_type_in_df(x = x, type = "specimen")
}
- if (isFALSE(col_specimen)) {
- col_specimen <- NULL
- }
# check if columns exist
check_columns_existance <- function(column, tblname = x) {
diff --git a/R/like.R b/R/like.R
index 0c981158..d132341e 100755
--- a/R/like.R
+++ b/R/like.R
@@ -42,6 +42,8 @@
#' * Tries again with `perl = TRUE` if regex fails
#'
#' Using RStudio? This function can also be inserted from the Addins menu and can have its own Keyboard Shortcut like `Ctrl+Shift+L` or `Cmd+Shift+L` (see `Tools` > `Modify Keyboard Shortcuts...`).
+#'
+#' The `"%not_like%"` and `"%like_perl%"` functions are wrappers around `"%like%"`.
#' @source Idea from the [`like` function from the `data.table` package](https://github.com/Rdatatable/data.table/blob/master/R/like.R)
#' @seealso [grep()]
#' @inheritSection AMR Read more on our website!
@@ -146,10 +148,18 @@ like <- function(x, pattern, ignore.case = TRUE) {
#' @export
"%like%" <- function(x, pattern) {
meet_criteria(x, allow_NA = TRUE)
- meet_criteria(pattern, allow_class = "character")
+ meet_criteria(pattern, allow_NA = FALSE)
like(x, pattern, ignore.case = TRUE)
}
+#' @rdname like
+#' @export
+"%not_like%" <- function(x, pattern) {
+ meet_criteria(x, allow_NA = TRUE)
+ meet_criteria(pattern, allow_NA = FALSE)
+ !like(x, pattern, ignore.case = TRUE)
+}
+
#' @rdname like
#' @export
"%like_case%" <- function(x, pattern) {
@@ -158,11 +168,13 @@ like <- function(x, pattern, ignore.case = TRUE) {
like(x, pattern, ignore.case = FALSE)
}
-# don't export his one, it's just for convenience in eucast_rules()
-# match all Klebsiella and Raoultella, but not K. aerogenes: fullname %like_perl% "^(Klebsiella(?! aerogenes)|Raoultella)"
+#' @rdname like
+#' @export
"%like_perl%" <- function(x, pattern) {
meet_criteria(x, allow_NA = TRUE)
meet_criteria(pattern, allow_NA = FALSE)
+ # convenient for e.g. matching all Klebsiella and Raoultella, but not
+ # K. aerogenes: fullname %like_perl% "^(Klebsiella(?! aerogenes)|Raoultella)"
grepl(x = tolower(x),
pattern = tolower(pattern),
perl = TRUE,
diff --git a/docs/404.html b/docs/404.html
index 9eceb7f8..fc139ae1 100644
--- a/docs/404.html
+++ b/docs/404.html
@@ -81,7 +81,7 @@
NEWS.md
-
is_gram_negative()
and is_gram_positive()
as wrappers around mo_gramstain()
. They always return TRUE
or FALSE
, thus always return FALSE
for species outside the taxonomic kingdom of Bacteria.%not_like%
and %like_perl%
as wrappers around %like%
.