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.

Reply via email to