[Rd] suggestion for extending ?as.factor
Petr Savicky
savicky at cs.cas.cz
Fri May 8 18:10:56 CEST 2009
On Fri, May 08, 2009 at 05:14:48PM +0200, Petr Savicky wrote:
> Let me suggest to consider the following modification, where match() is done
> on the strings, not on the original values.
> levels <- unique(as.character(sort(unique(x))))
> x <- as.character(x)
> f <- match(x, levels)
An alternative solution is
ind <- order(x)
x <- as.character(x) # or any other conversion to character
levels <- unique(x[ind]) # get unique levels ordered by the original values
f <- match(x, levels)
The advantage of this over the suggestion from my previous email is that
the string conversion is applied only once. The conversion need not be only
as.character(). There may be other choices specified by a parametr. I have
strong objections against the existing implementation of as.character(),
but still i think that as.character() should be the default for factor()
for the sake of consistency of the R language.
Petr.
More information about the R-devel
mailing list