Note the edited subject line! I don't know why I typed it as it was before.
This says that as.numeric(as.character(f)) will work regardless of the implementation, and I agree. It's the recommendation to use as.numeric(levels(f))[f] that has me wondering about section 2.3.1 of the language definition. I expect that this idiom is in widespread use, and perhaps the language definition should be changed. On Mon, Apr 1, 2013 at 2:58 PM, Bert Gunter <gunter.ber...@gene.com> wrote: > Yup. Note also: > > > as.character.factor > function (x, ...) > levels(x)[x] > > But of course this is OK, since this can change if the implementation > does. Which is the whole point, of course. > > -- Bert > > > > On Mon, Apr 1, 2013 at 12:16 PM, Matthew Lundberg > <matthew.k.lundb...@gmail.com> wrote: > > > > When used as an index, the factor is implicitly converted to integer. In > > the expression as.numeric(levels(f))[f], the vector as.numeric(levels(f)) > > is indexed by as.integer(f). > > > > This appears to rely on the current implementation, as mentioned in > section > > 2.3.1 of the language definition. > > > > > > On Mon, Apr 1, 2013 at 1:49 PM, Peter Ehlers <ehl...@ucalgary.ca> wrote: > > > > > On 2013-04-01 10:48, Matthew Lundberg wrote: > > > > > >> These two seem to be at odds. Is this the case? > > >> > > >> From help(factor) - section Warning: > > >>> > > >> > > >> To transform a factor f to approximately its original numeric values, > > >> as.numeric(levels(f))[f] is recommended and slightly more efficient > than > > >> as.numeric(as.character(f)). > > >> > > >> From the language definition - section 2.3.1: > > >>> > > >> > > >> Factors are currently implemented using an integer array to specify > the > > >> actual levels and > > >> a second array of names that are mapped to the integers. Rather > > >> unfortunately users often > > >> make use of the implementation in order to make some calculations > easier. > > >> This, however, > > >> is an implementation issue and is not guaranteed to hold in all > > >> implementations of R. > > >> > > > > > > Hint: > > > > > > f <- factor(sample(5, 10, TRUE)) > > > as.numeric(levels(f))[f] > > > > > > g <- factor(sample(letters[1:5], 10, TRUE)) > > > as.numeric(levels(g))[g] > > > > > > Peter Ehlers > > > > > > > > > > > >> [[alternative HTML version deleted]] > > >> > > >> ______________________________**________________ > > >> R-help@r-project.org mailing list > > >> https://stat.ethz.ch/mailman/**listinfo/r-help< > https://stat.ethz.ch/mailman/listinfo/r-help> > > >> PLEASE do read the posting guide http://www.R-project.org/** > > >> posting-guide.html <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 > > 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. > > > > > -- > > Bert Gunter > Genentech Nonclinical Biostatistics > > Internal Contact Info: > Phone: 467-7374 > Website: > > http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm > [[alternative HTML version deleted]] ______________________________________________ R-help@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.