[Rd] nchar on factors
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Mon Aug 24 23:36:56 CEST 2009
Stavros Macrakis wrote:
> In R 2.9.1 Windows:
>
>> nchar(factor(paste('sdf',1:10)))
> [1] 1 1 1 1 1 1 1 1 2 1
>
> so it appears that nchar is counting the number of characters in the numeric
> representation, just like:
>
>> nchar(as.numeric(factor(paste('sdf',1:10))))
> [1] 1 1 1 1 1 1 1 1 2 1
>
> but ?nchar says explicitly:
>
> x: character vector, or a vector to be coerced to a character
> vector.
> ...
> The internal equivalent of the default method of 'as.character' is
> performed on 'x' (so there is no method dispatch).
>
> This would seem to say that nchar should behave the same as:
>
>> nchar(as.character(factor(paste('sdf',1:10))))
> [1] 5 5 5 5 5 5 5 5 5 6
>
> Either the documentation or the code should be corrected. Personally, I'd
> find the documented behavior much more useful, but I suppose that there is
> existing code that depends on the implementation's behavior rather than the
> specification.
The documentation has:
>>
The internal equivalent of the default method of as.character is
performed on x (so there is no method dispatch). If you want to operate
on non-vector objects passing them through deparse first will be required.
<<
and (notice the no method dispatch bit)
> as.character(unclass(factor(LETTERS)))
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13"
"14" "15"
[16] "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26"
So, the documentation does appear to be in sync with the code (useful or
not).
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-devel
mailing list