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

Georgi Boshnakov georg|@bo@hn@kov @end|ng |rom m@nche@ter@@c@uk
Thu Mar 5 10:10:30 CET 2020


It's not about god imposing style:).  Consider this variant of your example:
>    flag <- !is.null(x) && x > 0

With the strict checking this will throw error when you run it (good). If you replace && with & and x is a vector, flag will silently become a vector and the error be masked or delayed  and pop up far away.

Georgi Boshnakov


-----Original Message-----
From: R-package-devel <r-package-devel-bounces using r-project.org> On Behalf Of Rolf Turner
Sent: 05 March 2020 08:46
To: Tomas Kalibera <tomas.kalibera using gmail.com>
Cc: r-package-devel using r-project.org
Subject: Re: [R-pkg-devel] [FORGED] Re: Help on Windows CRAN Check


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!) 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 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

--
Honorary Research Fellow
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276

______________________________________________
R-package-devel using r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel



More information about the R-package-devel mailing list