[R-pkg-devel] [FORGED] Re: Help on Windows CRAN Check

Jeff Jetton je||@jetton @end|ng |rom gm@||@com
Thu Mar 5 15:44:10 CET 2020


This is something that, by the way, I've always thought R got backwards. If
you want an operation to handle "one thing" against "one other thing"
(scalars), a single & or | seems like the obvious symbol for it. Whereas an
operation on "multiple things" (vectors) would be well-represented by a
multiple-character symbol like && or ||.

But as long as I remember that it's backwards, I can keep them sorted out.
:-)

 - Jeff

On Thu, Mar 5, 2020 at 6:14 AM Uwe Ligges <ligges using statistik.tu-dortmund.de>
wrote:

>
>
> On 05.03.2020 09:45, Rolf Turner wrote:
> >
> > On 5/03/20 9:04 pm, Tomas Kalibera wrote:
> >
> >> On 3/5/20 4:26 AM, John Lawson wrote:
> >>> I see this error on the CRAN Check report
> >
> > <SNIP>
> >
> >>> Fatal error: the condition has length > 1
> >>
> >> The problem is that the condition t1 == "I" & t2 == "(" of the if
> >> statement in the code is not a scalar. Even though this has been allowed
> >> in R historically, the first element has been used, it is almost always
> >> a sign of coding error, so it is going to become a runtime error.
> >>
> >> So what one should do is fix the code to only use scalar conditions -
> >> ensure t1, t2 are scalar, replace & by &&.
> >
> > Perhaps I'm being even thicker than usual (imagine that!)
>
> Oh dear, but this time it is true...:
>
>
> > but I don't
> > grok that last recommendation:  "replace & by &&".  It's usually
> > harmless but indicates a lack of understanding.  The "&&" operator
> > evaluates the second condition only if the first condition is TRUE.  It
>
> Right, and as the conditions are scalar, we never have to evaluate the
> 2nd if the first is FALSE unless you do it for side effects.
>
> So for logical operators on scalar logical vectors, one should prefer &&
> and || for efficeincy reasons.
>
> Best,
> Uwe
>
>
>
>
> > is useful (only) in setting where the second condition is meaningful
> > only when the first condition is TRUE.
> >
> > Things like:
> >
> >     if(!is.null(x) && x > 0)
> >
> > If "x" were null then the second  condition would cause an error to be
> > thrown if you used "&" rather than "&&".
> >
> > In all (???) situations where "&&" works, then "&" works as well.
> > However it's a Good Idea to use the language as intended.
> >
> > It I'm missing some point here, please enlighten me.
> >
> > <SNIP>
> >
> > cheers,
> >
> > Rolf
> >
>
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>

	[[alternative HTML version deleted]]



More information about the R-package-devel mailing list