IMO that puts the cart before the horse. rlang implements these "operators" in very focused situations using custom expression parsing, and if they cannot tell the difference between numeric/logical and character data then rlang is broken.
That said, I do think as.logical() is more direct than !! for this purpose. On June 23, 2021 11:27:38 AM PDT, Bill Dunlap <williamwdun...@gmail.com> wrote: >Note that !! and !!! are special operators involving "quasiquotation" >in >the dplyr package. > >I would use as.logical(x) instead of !!x since its meaning is clear to >any >user. > >-Bill > >On Wed, Jun 23, 2021 at 11:13 AM Jeff Newmiller ><jdnew...@dcn.davis.ca.us> >wrote: > >> For the record, `!!` is not an operator so it does not "operate" on >> anything. The right ! does per the help page (?`!`) interpret >non-zero >> values as TRUE and invert that logic, yielding a logical result even >if the >> input is not logical. The left ! inverts that again, yielding a >logical >> vector without the inversion. >> >> On June 23, 2021 10:39:07 AM PDT, Phillips Rogfield ><thebudge...@gmail.com> >> wrote: >> >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 <ericjber...@gmail.com >> >> <mailto:ericjber...@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 >> >> <thebudge...@gmail.com <mailto:thebudge...@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@r-project.org <mailto:R-help@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@r-project.org <mailto:R-help@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@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. >> >> -- >> Sent from my phone. Please excuse my brevity. >> >> ______________________________________________ >> R-help@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. >> -- Sent from my phone. Please excuse my brevity. ______________________________________________ R-help@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.