[R] inconsistency in switch statements.....

Bill Dunlap w||||@mwdun|@p @end|ng |rom gm@||@com
Thu Sep 8 16:30:37 CEST 2022


The same is true for any function call; switch() is not special in this
regard.

> f <- function(x, ...) list(...)
> f("x"=1, "2"=2, `3`=3)
$`2`
[1] 2

$`3`
[1] 3

The backticks are required when defining a function with a non-syntactical
name, but the call can use either form.

> f <- function(x, `2`) x - `2`
> f("2"=7, 18)
[1] 11
> f(`2`=7, 18)
[1] 11


-Bill

On Wed, Sep 7, 2022 at 11:41 PM Richard O'Keefe <raoknz using gmail.com> wrote:

> You DON'T need to use backticks.  switch() is much older than backticks.
> Ordinary quotation marks are fine.
> > switch(as.character(1), "2"="YES", "1"="NO")
> [1] "NO"
>
>
> On Thu, 8 Sept 2022 at 07:46, akshay kulkarni <akshay_e4 using hotmail.com>
> wrote:
>
> > Dear Bert,
> >                     Thanks...I went through the doc pages but couldn't
> > glean from that that for numeric options one has to backtick it. I is not
> > given in the doc page...I actually had hundreds of different choices and
> so
> > cannot depend on evaluation by position...Thanks again...I got to know
> that
> > 2 is not a valid identifier but`2` is!
> >
> > Yours sincerely,
> > AKSHAY M KULKARNI
> >
> > ________________________________
> > From: Bert Gunter <bgunter.4567 using gmail.com>
> > Sent: Thursday, September 8, 2022 12:39 AM
> > To: akshay kulkarni <akshay_e4 using hotmail.com>
> > Cc: R help Mailing list <r-help using r-project.org>
> > Subject: Re: [R] inconsistency in switch statements.....
> >
> > Well, as it states on the Help page, which should always be the first
> > place to look for, ummm, help:
> >
> > "If the value of EXPR is not a character string it is coerced to
> > integer. Note that this also happens for factors, with a warning, as
> > typically the character level is meant. If the integer is between 1
> > and nargs()-1 then the corresponding element of ... is evaluated and
> > the result returned: thus if the first argument is 3 then the fourth
> > argument is evaluated and returned."
> >
> > So following up on Bill's comment, the arguments do not even need to
> > be names when Stst evaluates to) an integer:
> >
> > > Stst <- 2
> > > switch(Stst, print("NO"), print("YES"))
> > [1] "YES"
> >
> > Cheers,
> > Bert
> >
> > On Wed, Sep 7, 2022 at 11:35 AM akshay kulkarni <akshay_e4 using hotmail.com>
> > wrote:
> > >
> > > Dear members,
> > >                              The following is my code:
> > >
> > > > Stst <- 2
> > > > switch(Stst, 1 = print("NO"), 2 = print("YES"))
> > > Error: unexpected '=' in "switch(Stst, 1 ="
> > >
> > > Why isn't it printing "YES" on to the console?
> > >
> > > many thanks in advance.
> > >
> > > Thanking you,
> > > Yours sincerely,
> > > AKSHAY M KULKARNI
> > >
> > >         [[alternative HTML version deleted]]
> > >
> > > ______________________________________________
> > > R-help using 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.
> >
> >         [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help using 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.
> >
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list