matrix coercion, logical -> character
On 8 Dec 2003, Peter Dalgaard wrote:
Anyone know whether this is intentional, and by which rationale? (R-devel on RedHat, but hardly new)
It is documented:
'as.matrix' is a generic function. The method for data frames will
convert any non-numeric column into a character vector using
'format' and so return a character matrix.
Remember than not some long ago you could not have logical columns in data
frames: they were coerced to factors.
It would be easy to change to allow numeric, logical or character
matrices.
l <- data.frame(a=rpois(10,1)>0,b=rpois(10,1)>0) apply(l,1,which)
Error in FUN(newX[, i], ...) : argument to "which" is not logical
lapply(l,mode)
$a [1] "logical" $b [1] "logical"
mode(as.matrix(l))
[1] "character"
Brian D. Ripley, ripley@stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595