possible bug in formals
Dear Brian and Uwe,
Thanks a lot for the clarification.
I made the naive assumption that numeric constants in R are similar to
those in C.
Two questions still remain:
(1) when I have a function
f<- function(a=1,b=-1) { a+b }
is it safe to use
val <- as.character(deparse(formals(f)$b))
to obtain a string that contains the default value for
argument "b". (Does is also work for other arguments with some
default of arbitrary class?)
(2) I have seen that packages like gWidget (in function ggenericwidget)
use a statement like
switch(class(formals(f)$b),
numeric = { .... },
character = { .... },
class = { .... }, ....
for automatically processing function arguments.
in the case of "b=-1" this procedure obviously fails.
(I found this behavior of 'formals' while playing around with
packages "gWidgets" and "fgui" from CRAN).
Is there a safe workaround for this problem?
That is, is there a safe function that returns class
"numeric" for an exresion like "-1" or "-Inf"?
Josef
On Sun, May 23, 2010 at 03:52:00PM +0100, Prof Brian Ripley wrote:
Documented too: from ?NumericConstants
Note that a leading plus or minus is not regarded by the parser as
part of a numeric constant but as a unary operator applied to the
constant.
On Sun, 23 May 2010, Uwe Ligges wrote:
On 23.05.2010 16:14, Josef Leydold wrote:
Hi, I am a little bit surprised by the following output of 'formals'. Is this the intended behavior?
f<- function(a=1,b=-1) { a+b }
class(formals(f)$a)
[1] "numeric"
class(formals(f)$b)
[1] "call" Josef
Yes, the arguments have not yet been evaluated, hence -1 is still a language
object.
Try to write
f<- function(a= +1, b= -1) { a+b }
and you will find that this is a fascinating feature.
Uwe Ligges
______________________________________________ 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
-----------------------------------------------------------------------------
Josef Leydold | WU (Vienna University of Economics and Business)
| Institute for Statistics and Mathematics
-----------------------------------------------------------------------------
Augasse 2-6 | Tel. +43 1 31336 4695
A-1090 Vienna | FAX +43 1 31336 774
European Union | email josef.leydold at wu.ac.at
-----------------------------------------------------------------------------
Alles Unglueck kam daher, dass die Denkenden nicht mehr handeln konnten,
und die Handelnden keine Zeit mehr fanden zu denken. (Marlen Haushofer)