[R] How to spot/stop making the same mistake

Phillips Rogfield thebudget72 @end|ng |rom gm@||@com
Wed Jun 23 19:39:07 CEST 2021


Dear all,

thank for for your suggestion.

Yes I come from languages where 1 means TRUE and 0 means FALSE. In 
particular from C/C++ and Python.

Evidently this is not the case for R.

In my mind I kind took for granted that that was the case (1=TRUE, 0=FALSE).

Knowing this is not the case for R makes things simpler.

Mine was just an example, sometimes I load datasets taken from outside 
and variables are coded with 1/0 (for example, a treatment variable may 
be coded that way).

I also did not know the !!() syntax!

Thank you for your help and best regards.

On 23/06/2021 17:55, Bert Gunter wrote:
> Just as a way to save a bit of typing, instead of
>
> > as.logical(0:4)
> [1] FALSE  TRUE  TRUE  TRUE  TRUE
>
> > !!(0:4)
> [1] FALSE  TRUE  TRUE  TRUE  TRUE
>
> DO NOTE that the parentheses in the second expression should never be 
> omitted, a possible reason to prefer the as.logical() construction.
> Also note that !!  "acts [only] on raw, logical and number-like 
> vectors," whereas as.logical() is more general. e.g. (from ?logical):
>
> > charvec <- c("FALSE", "F", "False", "false",    "fAlse", "0",
> +              "TRUE",  "T", "True",  "true",     "tRue",  "1")
> > as.logical(charvec)
>  [1] FALSE FALSE FALSE FALSE    NA    NA  TRUE  TRUE  TRUE  TRUE    NA 
>    NA
> > !!charvec
> Error in !charvec : invalid argument type
>
>
> Cheers,
> Bert
>
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along 
> and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
> On Wed, Jun 23, 2021 at 8:31 AM Eric Berger <ericjberger using gmail.com 
> <mailto:ericjberger using gmail.com>> wrote:
>
>     In my code, instead of 't', I name a vector of indices with a
>     meaningful
>     name, such as idxV, to make it obvious.
>
>     Alternatively, a minor change in your style would be to replace your
>     definition of t by
>
>     t <- as.logical(c(1,1,1,0,0))
>
>     HTH,
>     Eric
>
>
>     On Wed, Jun 23, 2021 at 6:11 PM Phillips Rogfield
>     <thebudget72 using gmail.com <mailto:thebudget72 using gmail.com>>
>     wrote:
>
>     > I make the same mistake all over again.
>     >
>     > In particular, suppose we have:
>     >
>     > a = c(1,2,3,4,5)
>     >
>     > and a variable that equals 1 for the elements I want to select:
>     >
>     > t = c(1,1,1,0,0)
>     >
>     > To select the first 3 elements.
>     >
>     > The problem is that
>     >
>     > a[t]
>     >
>     > would repeat the first element 3 times .....
>     >
>     > I have to either convert `t` to boolean:
>     >
>     > a[t==1]
>     >
>     > Or use `which`
>     >
>     > a[which(t==1)]
>     >
>     > How can I "spot" this error?
>     >
>     > It often happens in long scripts.
>     >
>     > Do I have to check the type each time?
>     >
>     > Do you have any suggestions?
>     >
>     > ______________________________________________
>     > R-help using r-project.org <mailto:R-help using r-project.org> mailing list
>     -- To UNSUBSCRIBE and more, see
>     > https://stat.ethz.ch/mailman/listinfo/r-help
>     <https://stat.ethz.ch/mailman/listinfo/r-help>
>     > PLEASE do read the posting guide
>     > http://www.R-project.org/posting-guide.html
>     <http://www.R-project.org/posting-guide.html>
>     > and provide commented, minimal, self-contained, reproducible code.
>     >
>
>             [[alternative HTML version deleted]]
>
>     ______________________________________________
>     R-help using r-project.org <mailto:R-help using r-project.org> mailing list --
>     To UNSUBSCRIBE and more, see
>     https://stat.ethz.ch/mailman/listinfo/r-help
>     <https://stat.ethz.ch/mailman/listinfo/r-help>
>     PLEASE do read the posting guide
>     http://www.R-project.org/posting-guide.html
>     <http://www.R-project.org/posting-guide.html>
>     and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list