Inline...
> On 13 Apr 2020, at 11:15 , Martin Maechler <maechler at
stat.math.ethz.ch> wrote:
>
>>>>>> Bert Gunter
>>>>>> on Sun, 12 Apr 2020 16:30:09 -0700 writes:
>
>> Don't know if this has come up before, but ...
>>> x <- c(0,0)
>>> length(x)
>> [1] 2
>> ## but
>>> stopifnot(length(x))
>> Error: length(x) is not TRUE
>> Called from: top level
>> ## but
>>> stopifnot(length(x) > 0) ## not an error; nor is
>>> stopifnot(as.logical(length(x)))
>> ## Ouch!
>
>> Maybe the man page should say something about not assuming automatic
>> coercion to logical, which is the usual expectation. Or fix this.
>
>> Bert Gunter
>
> Well, what about the top most paragraph of the help page is not clear here
?
>
>> Description:
>
>> If any of the expressions (in '...' or 'exprs') are
not 'all'
>> 'TRUE', 'stop' is called, producing an error
message indicating
>> the _first_ expression which was not ('all') true.
>
This, however, is somewhat less clear:
..., exprs: any number of (typically but not necessarily ?logical?) R
expressions, which should each evaluate to (a logical vector
of all) ?TRUE?. Use _either_ ?...? _or_ ?exprs?, the latter
What does it mean, "typically but not necessarily ?logical?"? The code
actually tests explicitly with is.logical, as far as I can tell.
This creates a discrepancy between if(!...)stop(...) and stopifnot(), as in
> f <- function (x) if (!x) stop(paste(deparse(substitute(x)), "is
not TRUE"))
> f(0)
Error in f(0) : 0 is not TRUE> f(1)
> stopifnot(0)
Error: 0 is not TRUE> stopifnot(1)
Error: 1 is not TRUE
-pd
> If useR's expectations alone would guide the behavior of a
> computer language, the language would have to behave
> "personalized" and give different results depending on the user,
> which may be desirable in medicine or psychotherapy but not with R.
>
> Martin
>
> ______________________________________________
> R-help at 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.
--
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com