[R] Evaluating args in a function
Duncan Murdoch
murdoch at stats.uwo.ca
Wed Sep 12 19:13:14 CEST 2007
On 9/12/2007 12:48 PM, Sandy Weisberg wrote:
> Can anyone explain what I'm doing wrong here:
>
> > fred <- data.frame()
> > class(fred)
> [1] "data.frame"
> > test.fn <- function(x,class=class(x)) {class}
> > test.fn(fred)
> Error in test.fn(fred) : promise already under evaluation: recursive
> default argument reference or earlier problems?
>
> R 2.5.1 on both Windows and SUSE Linux.
As Gabor said, this is a recursive reference. In order to know whather
your default value class(x) should evaluate using the local variable
named class or should go back to the base package, R needs to evaluate
it. And there's the loop.
Another solution besides Gabor's suggestion of renaming the argument is
to be explicit that you want the base class() function, e.g.
> test.fn <- function(x,class=base::class(x)) {class}
> fred <- data.frame()
> test.fn(fred)
[1] "data.frame"
Duncan Murdoch
More information about the R-help
mailing list