The string index approach works with any mapping from stage names to stage numbers, not just regular ones. For example, if we had "1" -> 1, "1a" -> 1.4, "1b" -> 1.6 "2" -> 2, "2a" -> 2.3, "2b" -> 2.7 the 'sub' version would fail miserably while the string index version would just work. The 'sub' version would also not work terribly well if the mapping were "1" -> 1, "a1" -> 1.3, "b1" -> 1.5, "c1" -> 1.7 and so on. The thing I like about the indexing approach is that it uses a fundamental operation of the language very directly.
Anyone using R would do well to *master* what indexing can do for you. On Sat, 11 Jul 2020 at 17:16, Eric Berger <ericjber...@gmail.com> wrote: > xn <- as.numeric(sub("c",".7",sub("b",".5",sub("a",".3",xc)))) > > > On Sat, Jul 11, 2020 at 5:09 AM Richard O'Keefe <rao...@gmail.com> wrote: > >> This can be done very simply because vectors in R can have >> named elements, and can be indexed by strings. >> >> > stage <- c("1" = 1, "1a" = 1.3, "1b" = 1.5, "1c" = 1.7, >> + "2" = 2, "2a" = 2.3, "2b" = 2.5, "2c" = 2.7, >> + "3" = 3, "3a" = 3.3, "3b" = 3.5, "3c" = 3.7) >> >> > testdata <- rep(c("1", "1a", "1b", "1c", >> + "2", "2a", "2b", "2c", >> + "3", "3a", "3b", "3c"), times=c(1:6,6:1)) >> >> > stage[testdata] >> 1 1a 1a 1b 1b 1b 1c 1c 1c 1c 2 2 2 2 2 2a 2a 2a >> 2a >> 2a >> 1.0 1.3 1.3 1.5 1.5 1.5 1.7 1.7 1.7 1.7 2.0 2.0 2.0 2.0 2.0 2.3 2.3 2.3 >> 2.3 >> 2.3 >> 2a 2b 2b 2b 2b 2b 2b 2c 2c 2c 2c 2c 3 3 3 3 3a 3a >> 3a >> 3b >> 2.3 2.5 2.5 2.5 2.5 2.5 2.5 2.7 2.7 2.7 2.7 2.7 3.0 3.0 3.0 3.0 3.3 3.3 >> 3.3 >> 3.5 >> 3b 3c >> 3.5 3.7 >> >> On Sat, 11 Jul 2020 at 05:51, Jean-Louis Abitbol <abit...@sent.com> >> wrote: >> >> > Dear All >> > >> > I have a character vector, representing histology stages, such as for >> > example: >> > xc <- c("1", "1a", "1b", "1c", "2", "2a", "2b", "2c") >> > >> > and this goes on to 3, 3a etc in various order for each patient. I do >> have >> > of course a pre-established classification available which does change >> > according to the histology criteria under assessment. >> > >> > I would want to convert xc, for plotting reasons, to a numeric vector >> such >> > as >> > >> > xn <- c(1, 1.3, 1.5, 1.7, 2, 2.3, 2.5, 2.7) >> > >> > Unfortunately I have no clue on how to do that. >> > >> > Thanks for any help and apologies if I am missing the obvious way to do >> it. >> > >> > JL >> > -- >> > Verif30042020 >> > >> > ______________________________________________ >> > 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. >> > >> >> [[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. >> > [[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.