[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.


More information about the R-devel mailing list