[R] how to use the switch statement

Don MacQueen macq at llnl.gov
Mon Nov 20 16:27:55 CET 2006


It doesn't work because switch is not vectorized.

This is a job for match(). Here's an example, recoding
   a  to a1
   b  to b1
and so on, up to e, e1.

>  foo <- sample(letters[1:5],10,replace=TRUE)
>  foo
  [1] "e" "b" "b" "e" "a" "c" "a" "c" "d" "e"
>  tmpnew <- c('a1','b1','c1','d1','e1')
>  tmpold <- letters[1:5]
>  tmpnew[match(foo,tmpold)]
  [1] "e1" "b1" "b1" "e1" "a1" "c1" "a1" "c1" "d1" "e1"

-Don


At 3:47 PM +0100 11/20/06, Biscarini, Filippo wrote:
>Good morning,
>
>I am trying to recode the values of a column in a data frame and,
>instead of using a long series of if/else statements I would like to use
>a switch (as it is, for instance, in the C programming language).
>
>I have a column of this type:
>
>AT
>BB
>B1
>B1
>CC
>CC
>T6
>B1
>CC
>BB
>TT
>AT
>AT
>AT
>TT
>BB
>  ...
>
>and I need to change this coding (if it's AT then it should be A1, if
>it's BB then it should be A2, and so on ...)
>
>I was trying to use switch in the following way:
>
>switch(column_name,
>'AT'='A1'
>'BB'='A2'
>...)
>
>but it's not working.
>The R help is particularly cryptic on this point.
>
>Can anyone help me?
>
>Thank you very much,
>
>Filippo Biscarini
>
>University of Wageningen (The Netherlands)
>
>	[[alternative HTML version deleted]]
>
>______________________________________________
>R-help at stat.math.ethz.ch 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.


-- 
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA



More information about the R-help mailing list