I think the inspection of the "stopifnot()" source code may help.
> stopifnot function (...) { n <- length(ll <- list(...)) if (n == 0L) return(invisible()) mc <- match.call() for (i in 1L:n) if (!(is.logical(r <- ll[[i]]) && !anyNA(r) && all(r))) { ch <- deparse(mc[[i + 1]], width.cutoff = 60L) if (length(ch) > 1L) ch <- paste(ch[1L], "....") stop(sprintf(ngettext(length(r), "%s is not TRUE", "%s are not all TRUE"), ch), call. = FALSE, domain = NA) } invisible() } The following code may help in understanding. (arg <- (logical(0) == 1)) (arg <- (logical(0) == TRUE)) (arg <- (logical(0) == FALSE)) n <- length(ll <- list(arg)) n if (n == 0L) return(invisible()) for (i in 1L:n) { print(is.logical(r <- ll[[i]])) print(!anyNA(r)) print(all(r)) if (! (is.logical(r <- ll[[i]]) && !anyNA(r) && all(r)) ) { print("stop") } } Executing such code: > (arg <- (logical(0) == 1)) logical(0) > (arg <- (logical(0) == TRUE)) logical(0) > (arg <- (logical(0) == FALSE)) logical(0) > > n <- length(ll <- list(arg)) > n [1] 1 > > if (n == 0L) + return(invisible()) > > for (i in 1L:n) { + print(is.logical(r <- ll[[i]])) + print(!anyNA(r)) + print(all(r)) + if (! (is.logical(r <- ll[[i]]) && !anyNA(r) && all(r)) ) { + print("stop") + } + } [1] TRUE [1] TRUE [1] TRUE > See also help(all) and what its "Note" states about all(logical(0)) and consider that: > is.logical(logical(0)) [1] TRUE -- GG [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.