Hi, When I call the *switch* function first time, it works. but when I call it at the second time, it does nothing. The version I use is R version 2.9.0 Under development (unstable) (2009-02-21 r47969) here is the output:> organism="human" > species <- switch(organism,human <- "Hs", fly <- "Dm", mouse <- "Mm", rat <- "Rn", yeast <- "Sc" ) species <- switch(organism, + human <- "Hs", + fly <- "Dm", + mouse <- "Mm", + rat <- "Rn", + yeast <- "Sc" + )> species[1] "Hs"> organism="yeast" > species <- switch(organism,human <- "Hs", fly <- "Dm", mouse <- "Mm", rat <- "Rn", yeast <- "Sc" ) species <- switch(organism, + human <- "Hs", + fly <- "Dm", + mouse <- "Mm", + rat <- "Rn", + yeast <- "Sc" + )> species[1] "Hs" when I change *organism* to "yeast", and call *switch* function again, *species* suppose to be changed to "Sc", but it remain it's original value. You can see my screenshot at http://ygc.azpala.com/2009/03/09/bug-of-r-29-dev -- Bests, Guangchuang Yu --~--~---------~--~----~------------~-------~--~----~ Rm 848 Dept 9 Institute of Radiation Medicine 27 Taiping Rd. Haidian Dist. Beijing, 100850, China Telephone: (86)-010-66931422 Mobile: +86-13439009806 Email: guangchuangyu@gmail.com -~----------~----~----~----~------~----~------~--~--- [[alternative HTML version deleted]]
guangchuang yu wrote:> Hi, > > When I call the *switch* function first time, it works. but when I call it > at the second time, it does nothing. The version I use is R version 2.9.0 > Under development (unstable) (2009-02-21 r47969) > > > here is the output: > >> organism="human" >> species <- switch(organism, > human <- "Hs", > fly <- "Dm", > mouse <- "Mm", > rat <- "Rn", > yeast <- "Sc" > ) > species <- switch(organism, > + human <- "Hs", > + fly <- "Dm", > + mouse <- "Mm", > + rat <- "Rn", > + yeast <- "Sc" > + ) >> species > [1] "Hs" >> organism="yeast" >> species <- switch(organism, > human <- "Hs", > fly <- "Dm", > mouse <- "Mm", > rat <- "Rn", > yeast <- "Sc" > ) > species <- switch(organism, > + human <- "Hs", > + fly <- "Dm", > + mouse <- "Mm", > + rat <- "Rn", > + yeast <- "Sc" > + ) >> species > [1] "Hs" > > > when I change *organism* to "yeast", and call *switch* function again, > *species* suppose to be changed to "Sc", but it remain it's original value. > > You can see my screenshot at > http://ygc.azpala.com/2009/03/09/bug-of-r-29-dev >Wrong syntax. Check the examples of ?switch. If the first argument to switch is not numeric, and does not match the name of any named argument (of which you have none), then the result is the first unnamed argument (i.e. "Hs"). -- O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
This isn't a bug in R. You are assigning within the switch statement, and it is returning the first TRUE value (human). Use "=" not "<-" species <- switch(organism, human="HS", fly="DM", yeast="SC")> species[1] "SC" HTH Jeff On Mon, Mar 9, 2009 at 8:55 AM, guangchuang yu <guangchuangyu at gmail.com> wrote:> Hi, > > When I call the *switch* function first time, it works. but when I call it > at the second time, it does nothing. The version I use is R version 2.9.0 > Under development (unstable) (2009-02-21 r47969) > > > here is the output: > >> organism="human" >> ? ? species <- switch(organism, > ? ? ? ?human <- "Hs", > ? ? ? ?fly <- "Dm", > ? ? ? ?mouse <- "Mm", > ? ? ? ?rat <- "Rn", > ? ? ? ?yeast <- "Sc" > ? ?) > ?species <- switch(organism, > + ? human <- "Hs", > + ? fly <- "Dm", > + ? mouse <- "Mm", > + ? rat <- "Rn", > + ? yeast <- "Sc" > + ?) >> species > [1] "Hs" >> organism="yeast" >> ? ? species <- switch(organism, > ? ? ? ?human <- "Hs", > ? ? ? ?fly <- "Dm", > ? ? ? ?mouse <- "Mm", > ? ? ? ?rat <- "Rn", > ? ? ? ?yeast <- "Sc" > ? ?) > ?species <- switch(organism, > + ? human <- "Hs", > + ? fly <- "Dm", > + ? mouse <- "Mm", > + ? rat <- "Rn", > + ? yeast <- "Sc" > + ?) >> species > [1] "Hs" > > > when I change *organism* to "yeast", and call *switch* function again, > *species* suppose to be changed to "Sc", but it remain it's original value. > > You can see my screenshot at > http://ygc.azpala.com/2009/03/09/bug-of-r-29-dev > > -- > Bests, > Guangchuang Yu > > --~--~---------~--~----~------------~-------~--~----~ > Rm 848 Dept 9 > Institute of Radiation Medicine > 27 Taiping Rd. Haidian Dist. > Beijing, 100850, China > Telephone: (86)-010-66931422 > Mobile: +86-13439009806 > Email: guangchuangyu at gmail.com > -~----------~----~----~----~------~----~------~--~--- > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Jeffrey Ryan jeffrey.ryan at insightalgo.com ia: insight algorithmics www.insightalgo.com