[Rd] How do you construct a function from a list?
Kurt Hornik
Kurt.Hornik@ci.tuwien.ac.at
Wed, 22 Nov 2000 13:08:26 +0100
>>>>> Duncan Murdoch writes:
> I'm trying to get a data.restore function to work on functions. One
> thing I can't figure out: how do you construct a function from it's
> component parts?
> For example, I can construct a for loop as
> forloop <-
> as.call(list(as.name('for'),as.name('i'),1,as.call(list(as.name('junk')))))
> which results in
> for (i in 1) junk()
> But how do I put that in a function? For example, I'd like the
> function
> function() for (i in 1) junk()
> but as.function(list(forloop)) results in
> function ()
> list(for (i in 1) junk())
> which returns the for loop in a list, it doesn't execute it. How do I
> construct the function?
> (This might be a bug in as.function, because
> as.function(c(alist(a=,b=2),forloop))
> returns the expected function
> function (a, b = 2)
> for (i in 1) junk()
> It's just that I can't seem to find a way to do it when there are no
> arguments.)
Duncan,
I think the easiest approach is to do
foo <- function() {}
body(foo) <- forloop
Re the above, I guess Peter would know more about this but is currently
swamped with other work. I also observe that
R> as.function(alist(forloop))
function ()
list(forloop)
R> as.function(list(forloop))
function ()
list(for (i in 1) junk())
which does not seem right.
-k
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel 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-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._