[R] THX-- How to use 'switch' with strings containing spaces?

jim holtman jholtman at gmail.com
Wed Aug 24 17:11:33 CEST 2011


?switch

If you read the help page, you will see that if the EXPR evaluates to
a character string, then is matches on the "names" of the elements;
'x[1]' is not a name, it is a value.

You want to probably use 'match'

> match("Choice 2", x)
[1] 2



On Wed, Aug 24, 2011 at 10:52 AM, Mauricio Cornejo
<mauriciocornejo at yahoo.com> wrote:
> Richard,
>
> Thanks for your observation and tip.
>
> My apologies that the 'expr' seemed undefined.  That was intentional on my part as I only wanted to show the form of the non-working code.  Let me be clearer by updating the code with what I actually type at the command line.  The code below does not work (error message included).
>
>
> x <- c("Choice 1", "Choice 2", "Choice 3")
> switch("Choice 2", x[1]="My first choice", x[2]="My 2nd choice", x[3]="My 3rd choice")
> Error: unexpected '=' in "switch("Choice 2", x[1]="
>
> On an earlier reply, David Winsemius suggested using the 'match' function instead.  Perhaps that is the way to go, bypassing 'switch' altogether.  But I would like to know why the code above does not work.
>
>
> Again, many thanks,
> Mauricio
>
>
>
> ________________________________
> From: Richard M. Heiberger <rmh at temple.edu>
>
> Cc: "r-help at r-project.org" <r-help at r-project.org>
> Sent: Tuesday, August 16, 2011 6:59 PM
> Subject: Re: [R] How to use 'switch' with strings containing spaces?
>
>
> The problem is that your argument expr is undefined.
>
> This works
>
>> switch("Choice 2", "Choice 1"="My first choice", "Choice 2"="My 2nd choice", "Choice 3"="My 3rd choice")
> [1] "My 2nd choice"
>> x <- "Choice 2"
>> switch(x, "Choice 1"="My first choice", "Choice 2"="My 2nd choice", "Choice 3"="My 3rd choice")
> [1] "My 2nd choice"
>>
>
>
>
>
> On Tue, Aug 16, 2011 at 4:53 PM, Mauricio Cornejo <mauriciocornejo at yahoo.com> wrote:
>
> Hi,
>>
>>Does anyone know if the alternatives in the 'switch' function can be specified as strings containing spaces?  Neither of the two approaches below works.
>>
>>
>>switch(expr, "Choice 1"="My first choice", "Choice 2"="My 2nd choice", "Choice 3"="My 3rd choice")
>>
>>
>>x <- c("Choice 1", "Choice 2", "Choice 3")
>>switch(expr, x[1]="My first choice", x[2]="My 2nd choice", x[3]="My 3rd choice")
>>
>>
>>If the intended functionality can be achieved by a different function(s), I'd most appreciate such a suggestion as well.
>>
>>Many thanks,
>>Mauricio
>>
>>       [[alternative HTML version deleted]]
>>
>>
>>______________________________________________
>>R-help at r-project.org mailing list
>>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 at r-project.org mailing list
> 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.
>
>



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?



More information about the R-help mailing list