From ripley at stats.ox.ac.uk  Mon Jun 10 10:38:25 2013
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Mon, 10 Jun 2013 09:38:25 +0100
Subject: [Rd] col2rgb, factors & documentation
In-Reply-To: <8A85383B-7A1F-46CF-8C31-5BFEADC610DD@depauw.edu>
References: <8A85383B-7A1F-46CF-8C31-5BFEADC610DD@depauw.edu>
Message-ID: <51B59081.9000005@stats.ox.ac.uk>

On 07/06/2013 18:59, Bryan Hanson wrote:
> Hello Core Folk.

This is the R-devel list.  Bug reports/enhancement suggestions should go 
to bugs.r-project.org.

> Quite by accident I discovered today that col2rgb, when fed factors, acts on the integer representation of those factors:
>
> td <- as.factor(rainbow(5)) # not how I discovered the issue!
> td
> res <- col2rgb(td)
> res
> # but
> col2rgb("#FF0000FF") # this is td[1] but does not produce the same answer
> res[,1]
> # moreover
> as.integer(td)
> col2rgb(5) # the integer value of the first level
> # and this is res[,1] which by the way is palette()[5], aka "cyan"
>
> ?col2rgb says:
> col	
> vector of any of the three kinds of R color specifications, i.e., either a color name (as listed by colors()), a hexadecimal string of the form "#rrggbb" or "#rrggbbaa" (see rgb), or a positive integer i meaning palette()[i]. Non-numeric values are coerced to character.
>
> So in the example the factor is being taken as its integer representation, and finding an integer as the input value, col2rgb goes to palette().
>
> Perhaps this is a nuance that belongs in the documentation?

It has been like that since at least R 2.0.0.  I'll rephrase the help 
and change to coercion to character.


>
> Thanks, Bryan
> ***********
> Bryan Hanson
> Professor of Chemistry & Biochemistry
> DePauw University
>
> ______________________________________________
> 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] col2rgb, factors & documentation
Prof Brian Ripley