This was either an attempt to get an early lead in some future
obfuscating R contest or a way of getting around the different scoping
rules of R and S.
I attempted to create a recursive anonymous function to be called
within another function. You may want to stop reading for a bit and
consider how that would be done. That is, how do you recursively call
a function that has never been assigned a name?
OK, you're back. You probably came up with a better solution than I
did but I used (sys.function())(arg) to do the recursion. The piece
of code looks like
flist <- (function(x) {
if (mode(x) == "call") {
if (x[[1]] == as.name("/"))
return(c(sys.function()(x[[2]]), sys.function()(x[[3]])))
if (x[[1]] == as.name("(")) # for R
return(sys.function()(x[[2]]))
}
if (mode(x) == "(") return(sys.function()(x[[2]])) # for S
list(x)
})(getGroupsFormula(data, form, ...)[[2]])
## I know it's horribly obscure. Blame Bill Venables for teaching me
this.
Regretably, it doesn't work in R. Using the debugger one finds that
sys.function() returns the function being called the first time
through but the second time through it returns NULL. Is this a bug or
a feature?
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-r-help
mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at
stat.math.ethz.ch
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=