From ripley at stats.ox.ac.uk  Fri Dec 12 10:08:11 2008
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Fri, 12 Dec 2008 09:08:11 +0000 (GMT)
Subject: [Rd] repeat bug report: as.factor argument to row / col fails
 if NULL dimnames
In-Reply-To: <20081209004521.GA25854@stats.ox.ac.uk>
References: <20081209004521.GA25854@stats.ox.ac.uk>
Message-ID: <alpine.LFD.2.00.0812120858320.14869@gannet.stats.ox.ac.uk>

I have never seen the report in the repository.  There were problems with 
R-bugs at around that time (most email submission was stalled for a month 
or so).

However, I think the problems are far more serious: the help page says

      Returns a matrix of integers indicating their column number in a
      matrix-like object.
...

as.factor: a logical value indicating whether the value should be
           returned as a factor rather than as numeric.

Value:

      An integer matrix with the same dimensions as 'x' and whose
      'ij'-th element is equal to 'j'.

There is no mention of using the column labels as the values and the 
result was not even a matrix.  I certainly expected the factor levels to 
be numeric.

I presume that the intention is to use the column labels (default 
seq_len(nrow(x)) ) in place of the numbers, and to return a factor matrix, 
so I have implemented that for col() and row().

However, I do wonder that anyone was using as.factor=TRUE given that it 
did not do anything like what it was documented to.

On Mon, 8 Dec 2008, Dan Davison wrote:

> This bug was reported to r-devel by Martin Morgan on 13th May 2008
> (original email pasted below). However I couldn't locate it in the bug
> tracker (with searches for row, col, as\.factor) It is still present
> in today's svn version (rev 47115). I hope I'm doing something useful
> by bringing it up again. I have not sent this to r-bugs, as I'm
> concerned that not locating it in the bug tracker could be my failing.
>
> Dan
>
> original report:
> ------------------------------------------------------------------
> col(matrix(0, 5, 5), as.factor=TRUE) fails
>
>> col(matrix(0, 5, 5), as.factor=TRUE)
> Error in factor(.Internal(col(dim(x))), labels = colnames(x)) :
>  invalid labels; length 0 should be 1 or 5
>
> when the matrix has no dimnames. This is not as advertised. I would
> have expected the equivalent of
>
> factor(.Internal(col(dim(x))),
>       labels=colnames(x, do.NULL=FALSE, prefix=""))
>
>> sessionInfo()
> R version 2.8.0 Under development (unstable) (2008-05-13 r45682)
> x86_64-unknown-linux-gnu
>
> Martin
> -- 
> Martin Morgan
> Computational Biology / Fred Hutchinson Cancer Research Center
> 1100 Fairview Ave. N.
> PO Box 19024 Seattle, WA 98109
>
> Location: Arnold Building M2 B169
> Phone: (206) 667-2793
> ------------------------------------------------------------------
>
>
> -- 
> http://www.stats.ox.ac.uk/~davison
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Brian D. Ripley,                  ripley at 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



[Rd] repeat bug report: as.factor argument to row / col fails if NULL dimnames
Prof Brian Ripley