[R-pkg-devel] [FORGED] Re: Help on Windows CRAN Check
peter dalgaard
pd@|gd @end|ng |rom gm@||@com
Thu Mar 5 16:28:32 CET 2020
Well, it originates in C, where & and | are bitwise operators.
-pd
> On 5 Mar 2020, at 15:44 , Jeff Jetton <jeff.jetton using gmail.com> wrote:
>
> 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]]
>
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
--
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 using cbs.dk Priv: PDalgd using gmail.com
More information about the R-package-devel
mailing list