Browse Source

Use rlang::as_function for tests

And accept "quoted" functions with ~
If the content of the formula is a function, use as is
If it throws an error (applying with a non-existant "."), use rlang::as_function to convert to a function
tags/0.2.0^2
Maxime Wack 2 years ago
parent
commit
bf7d75feda
1 changed files with 8 additions and 5 deletions
  1. +8
    -5
      R/tests.R

+ 8
- 5
R/tests.R View File

@@ -14,8 +14,11 @@ testify <- function(x, f, group) {
Reduce(f = paste0) %>%
substring(2) -> fun

# If eval(f[[2]]) throws an error, then we may be in an rlang-formula
tryCatch(f <- eval(f[[2]]),
error = function(e) {f <<- rlang::as_function(f)})

# Try the function
f <- eval(f[[2]])
p <- tryCatch(f(x ~ group)$p.value[1],
error = function(e) {message(e);NaN})

@@ -51,14 +54,14 @@ tests_auto <- function(var, grp) {

if (nlevels(grp) == 2) {
if (all_normal) {
if (tryCatch(stats::var.test(var ~ grp)$p.value > .1, warning = function(e) F, error = function(e) F)) ~. %>% t.test(var.equal = T)
else ~. %>% t.test(var.equal = F)
if (tryCatch(stats::var.test(var ~ grp)$p.value > .1, warning = function(e) F, error = function(e) F)) ~t.test(., var.equal = T)
else ~t.test(., var.equal = F)
}
else ~wilcox.test
} else {
if (all_normal) {
if (tryCatch(stats::bartlett.test(var ~ grp)$p.value > .1, warning = function(e) F, error = function(e) F)) ~. %>% oneway.test(var.equal = T)
else ~. %>% oneway.test(var.equal = F)
if (tryCatch(stats::bartlett.test(var ~ grp)$p.value > .1, warning = function(e) F, error = function(e) F)) ~oneway.test(., var.equal = T)
else ~oneway.test(., var.equal = F)
}
else ~kruskal.test
}


Loading…
Cancel
Save