An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130401/c29364b3/attachment.pl>
Factor to numeric conversion - as.numeric(as.character(f))[f] - Language definition seems to say to not use this.
5 messages · Matthew Lundberg, Ista Zahn, Peter Ehlers +1 more
Hi Mathew, In what way are they at odds? On Mon, Apr 1, 2013 at 1:48 PM, Matthew Lundberg
<matthew.k.lundberg at gmail.com> 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.
[[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.
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 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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130401/9933cf29/attachment.pl>
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.lundberg at 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 <ehlers at 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 at 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 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.
-- 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