# Re: [Rd] using a factor as col argument in plot:

From: Christoph Buser <buser_at_stat.math.ethz.ch>
Date: Tue 22 Nov 2005 - 07:50:57 GMT

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@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@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

R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Nov 22 18:55:19 2005

This archive was generated by hypermail 2.1.8 : Tue 22 Nov 2005 - 11:21:09 GMT