Ensure the Truth of R Expressions

If any of the expressions in are not all TRUE, stop is called, producing an error message indicating the first of the elements of which were not true.

programming, environment, error

any number of (logical) R expressions, which should evaluate to TRUE.


This function is intended for use in regression tests or also argument checking of functions, in particular to make them easier to read.

stopifnot(A, B) is conceptually equivalent to

 { if(any( || !all(A)) stop(...);
   if(any( || !all(B)) stop(...) }

Since R version 3.4.0, when an expression (from ) is not true and is a call to all.equal, the error message will report the (first part of the) differences reported by all.equal(*).


(NULL if all statements in are TRUE.)

See Also

stop, warning; assertCondition in package tools complements stopifnot() for testing warnings and errors.

  • stopifnot
library(base) # NOT RUN { stopifnot(1 == 1, all.equal(pi, 3.14159265), 1 < 2) # all TRUE m <- matrix(c(1,3,3,1), 2, 2) stopifnot(m == t(m), diag(m) == rep(1, 2)) # all(.) |=> TRUE op <- options(error = expression(NULL)) # "disabling stop(.)" << Use with CARE! >> stopifnot(all.equal(pi, 3.141593), 2 < 2, all(1:10 < 12), "a" < "b") stopifnot(all.equal(pi, 3.1415927), 2 < 2, all(1:10 < 12), "a" < "b") # long all.equal() error messages are abbreviated: stopifnot(all.equal(rep(list(pi),4), list(3.1, 3.14, 3.141, 3.1415))) options(op) # revert to previous error handler # }
Documentation reproduced from package base, version 3.4.3, License: Part of R 3.4.3

Community examples

Looks like there are no examples yet.