diff --git a/DESCRIPTION b/DESCRIPTION index b0fb41c..08c732b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: errorlocate Type: Package Title: Locate Errors with Validation Rules -Version: 1.1 +Version: 1.1.1 Authors@R: c(person("Edwin", "de Jonge", email = "edwindjonge@gmail.com", role = c("aut", "cre"), comment=c(ORCID="0000-0002-6580-4718")), person("Mark", "van der Loo", email = "mark.vanderloo@gmail.com", role = c("aut"))) Description: Errors in data can be located and removed using validation rules from package diff --git a/R/categorical.R b/R/categorical.R index beb3afc..f085f64 100644 --- a/R/categorical.R +++ b/R/categorical.R @@ -8,7 +8,7 @@ INFIX_CAT_NAME <- ":" return(TRUE) } - if(is.atomic(expr)){ + if(is.atomic(expr) || is.null(expr)){ return(is.logical(expr)) } diff --git a/R/conditional.R b/R/conditional.R index 371110d..53885a4 100644 --- a/R/conditional.R +++ b/R/conditional.R @@ -88,7 +88,7 @@ rep_lin_ <- function(e, or=TRUE, h=new.env()){ l <- left(e) r <- right(e) - if (is.atomic(e) || is.symbol(e)){ + if (is.atomic(e) || is.symbol(e) || is.null(e)){ return(e) } diff --git a/R/linear.R b/R/linear.R index 6c9ecf0..bdec868 100644 --- a/R/linear.R +++ b/R/linear.R @@ -48,10 +48,15 @@ is_lin_ <- function(expr, top=TRUE, ...){ return(is_lin_(l, FALSE) && is_lin_(r, FALSE)) } + if (is.null(expr)){ + return(TRUE) + } + if (is.atomic(expr)){ - return(is.numeric(expr) || is.null(expr)) + return(is.numeric(expr)) } + if (is.symbol(expr) || op == "var_group"){ return(TRUE) } if (op %in% c("+","-")){ diff --git a/tests/testthat/test-errorlocation.R b/tests/testthat/test-errorlocation.R index 029c9f1..ddb1daf 100644 --- a/tests/testthat/test-errorlocation.R +++ b/tests/testthat/test-errorlocation.R @@ -31,7 +31,7 @@ describe("errorlocation",{ rules <- validator( x > 1) d <- data.frame( x = c(0,1,2,-1)) N <- nrow(d) - el <- locate_errors(d, rules) + el <- locate_errors(d, rules, Ncpus = 1) expect_equal(length(el$duration), N) expect_true(el$duration[3] == 0)