[R] coercing factors to matrix() --> num/char ? -- inconsistencies|?

Martin Maechler maechler at stat.math.ethz.ch
Wed Jun 23 10:02:07 CEST 1999


The old factor() wars......
    {{maybe don't just report that factor()s are broken by design..}}

If ff is a factor, e.g.,
    ff <- as.factor(rep(1:2,3))
    f2 <- ff; levels(f2) <- c("Lo","Hi")

1) we don't allow {in R as in S-plus 3.x} arithmetic on factors, i.e.
     1 + ff
  gives an error, and I think most of us believe this is as desired.
  {{if one really wants the factor codes, use   codes(ff) ...}}.
  [BTW: S-plus 5.0r3 doesn't give an error anymore but silently returns NA,
	i.e.,  rep(NA,6) for the above example
  ]

2) On the other hand, it seems that implicit coercion to character()
   is rather ok, such as

   > paste("A", f2)

   [1] "A Lo" "A Hi" "A Lo" "A Hi" "A Lo" "A Hi"

--------

>From this logic, coercing to a matrix should coerce to character rather
than integer/numeric codes.
However, 

A: both R and S-plus 3.4  give an INTEGER matrix (with codes(.)) for

	rbind(ff)
	cbind(f2)

B: R gives an integer matrix  but S-plus a character one for

     matrix(ff)
or
     matrix(f2)

-------
So far the current behavior which I don't like.
I believe all matrix coercions should return mode "character" objects
for consistency with other coercion behavior of factors.

S(-plus) seems particularly inconsistent in doing different coercions
for cbind() and matrix().

Opinions ?   Proposals ?

Martin Maechler <maechler at stat.math.ethz.ch>	http://stat.ethz.ch/~maechler/
Seminar fuer Statistik, ETH-Zentrum SOL G1;	Sonneggstr.33
ETH (Federal Inst. Technology)	8092 Zurich	SWITZERLAND
phone: x-41-1-632-3408		fax: ...-1086			<><
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list