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.dalga...@biostat.ku.dk)              FAX: (+45) 35327907

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to