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 ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.