[Rd] using a factor as col argument in plot:
Christoph Buser
buser at stat.math.ethz.ch
Tue Nov 22 08:50:57 CET 2005
Dear Prof. Ripley
Thank you for your reply and for changing the function in
R-devel.
I've intended to ask my question in way 2) but I probably have
chosen a ambiguous formulation. :-)
Regards
Christoph Buser
--------------------------------------------------------------
Christoph Buser <buser at stat.math.ethz.ch>
Seminar fuer Statistik, LEO C13
ETH (Federal Inst. Technology) 8092 Zurich SWITZERLAND
phone: x-41-44-632-4673 fax: 632-1228
http://stat.ethz.ch/~buser/
--------------------------------------------------------------
Prof Brian Ripley writes:
> On Fri, 18 Nov 2005, Christoph Buser wrote:
>
> > Dear R core team
>
> and R-devel-listers.
>
> > Using the following code produces an empty plot (similar
> > to col = NA):
> >
> >> plot(1:9, col = factor(rep(1:3,3), labels = c("red", "blue", "black")))
> >
> >
> > My question: Shouldn't one get at least a warning (or an error)
> > if one tries to use a factor as col argument?
> >
> > Thanks for an answer.
>
> I can read that two ways
>
> 1) No, it should not give a warning, as it is programmed to take all
> invalid values as 0.
>
> 2) Is the way it is programmed sensible (yes) or desirable (no)?
>
> The actual code is
>
> /* Convert a sexp element to an R color desc */
> /* We Assume that Checks Have Been Done */
>
> unsigned int RGBpar(SEXP x, int i)
> {
> int indx;
> if(isString(x)) {
> return str2col(CHAR(STRING_ELT(x, i)));
> }
> else if(isInteger(x) || isLogical(x)) {
> if(INTEGER(x)[i] == NA_INTEGER)
> /*
> * Paul 01/07/04
> * Used to be set to NA_INTEGER (see comment in name2col).
> */
> return R_TRANWHITE;
> indx = INTEGER(x)[i] - 1;
> if(indx < 0) return Rf_dpptr(CurrentDevice())->bg;
> else return R_ColorTable[indx % R_ColorTableSize];
> }
> else if(isReal(x)) {
> if(!R_FINITE(REAL(x)[i]))
> /*
> * Paul 01/07/04
> * Used to be set to NA_INTEGER (see comment in name2col).
> */
> return R_TRANWHITE;
> indx = REAL(x)[i] - 1;
> if(indx < 0) return Rf_dpptr(CurrentDevice())->bg;
> else return R_ColorTable[indx % R_ColorTableSize];
> }
> return 0; /* should not occur */
> }
>
> but I could see no checks of type in any of the calling functions. Adding
> a warning would be a good idea.
>
>
> --
> 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
More information about the R-devel
mailing list