is.numeric() is generic.  So grid could include

is.numeric.unit <- function(x) FALSE

and register it in its namespace. Or Bert could define it in his application.


On Thu, 25 Feb 2010, gunter.ber...@gene.com wrote:

Paul:

I figured that would be the problem.

I encountered the issue when I tries to check arguments in a validDetails
method for a grob.

Could one substitute the following function in the grid namespace?

is.numeric <- function(x)if(is.unit(x))TRUE else is.numeric(x)

(or make the first clause FALSE)

Obviously, messing around like this might be dangerous -- or at least would
compromise execution speed.

Cheers,
Bert

Bert Gunter
Genentech Nonclinical Biostatistics



-----Original Message-----
From: paul murrell [mailto:r-b...@r-project.org]
Sent: Wednesday, February 24, 2010 4:22 PM
To: gunter.ber...@gene.com
Subject: Re: grid unit bug? (PR#14220)

The following seems to me to be at least a perverse trap, if not an =
outright
bug:

is.numeric(unit(1,"npc"))
[1] TRUE
is.numeric(1*unit(1,"npc"))
[1] FALSE
is.numeric(unit(0,"npc") +unit(1,"npc"))
[1] FALSE

...etc.
i.e. is.numeric() appears to be TRUE for class "unit" but false for =
class
("unit.arithmetic" "unit" ). Seems to me it ought to b the same for =
both.


These results simply reflect the underlying data structures (simple "unit"s
are
just numeric vectors, but more complex "unit.arithmetic"s are lists).  I
don't
see how I can "hide" the numeric-ness of simple units (just like there's no
way
to stop a "ts" object like 'Nile' from satisfying is.numeric()).  I could
re-implement simple units as lists, but (apart from the work involved) that
would be (even) less efficient.

1. Is there a situation where this causes a problem?

2. Do you have a possible "fix" in mind?

Paul



Bert Gunter
Genentech Nonclinical Biostatistics

(FWIW, I think grid graphics is brilliant!)

This was R version 2.11.0dev for Windows btw (not that it makes a
difference):

sessionInfo()

R version 2.11.0 Under development (unstable) (2010-02-15 r51142)=20
i386-pc-mingw32=20

locale:
[1] LC_COLLATE=3DEnglish_United States.1252=20
[2] LC_CTYPE=3DEnglish_United States.1252  =20
[3] LC_MONETARY=3DEnglish_United States.1252
[4] LC_NUMERIC=3DC                         =20
[5] LC_TIME=3DEnglish_United States.1252   =20

attached base packages:
 [1] datasets  splines   grid      tcltk     stats     graphics  =
grDevices
 [8] utils     methods   base    =20

other attached packages:
[1] TinnR_1.0.3     R2HTML_1.59-1   Hmisc_3.7-0     survival_2.35-8
[5] svSocket_0.9-48 lattice_0.18-3  MASS_7.3-5    =20

loaded via a namespace (and not attached):
[1] cluster_1.12.1 svMisc_0.9-56



=A0
=A0



______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


--
Brian D. Ripley,                  rip...@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

Reply via email to