Full_Name: Robert Denham
Version: R-2.4.1
OS: Windows Xp
Submission from: (NULL) (61.88.57.1)
R gui exits without warning when I run a function which has an argument with a
default that is not found.
This was a result of an error in a function I wrote, but I thought that it
should exit more gracefully than it does. Here is an example:
testfun <- function(aa=aa) {
aa <- lm(y~x,data=aa)
return(aa)
}
testfun() #R then exits.
Note that
testfun <- function(aa=bb) {
aa <- lm(y~x,data=aa)
return(aa)
}
works as it should, giving "object bb not found".
R windows crash (PR#9426)
3 messages · robert.denham at nrm.qld.gov.au, Peter Dalgaard, Brian Ripley
robert.denham at nrm.qld.gov.au wrote:
Full_Name: Robert Denham
Version: R-2.4.1
OS: Windows Xp
Submission from: (NULL) (61.88.57.1)
R gui exits without warning when I run a function which has an argument with a
default that is not found.
This was a result of an error in a function I wrote, but I thought that it
should exit more gracefully than it does. Here is an example:
testfun <- function(aa=aa) {
aa <- lm(y~x,data=aa)
return(aa)
}
testfun() #R then exits.
Note that
testfun <- function(aa=bb) {
aa <- lm(y~x,data=aa)
return(aa)
}
works as it should, giving "object bb not found".
This seems reproducible on Linux, except that it goes into an infinite loop. The lm call seems to be the real culprit: > testfun <- function(aa=aa) return(aa) > testfun() Error in testfun() : recursive default argument reference > testfun <- function(aa=aa) lm(x~y,data=aa) > testfun() (*poof*)
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
On Thu, 21 Dec 2006, Peter Dalgaard wrote:
[...]
This seems reproducible on Linux, except that it goes into an infinite loop. The lm call seems to be the real culprit:
testfun <- function(aa=aa) return(aa) testfun()
Error in testfun() : recursive default argument reference
testfun <- function(aa=aa) lm(x~y,data=aa) testfun()
(*poof*)
The difference is in argument evaluation between closures and internal functions (c() in my example, return() in yours).
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