From jeroenooms at gmail.com  Sun Jun  5 00:49:16 2011
From: jeroenooms at gmail.com (Jeroen Ooms)
Date: Sat, 4 Jun 2011 15:49:16 -0700 (PDT)
Subject: [Rd] call / do.call expression too big
Message-ID: <1307227756588-3574335.post@n4.nabble.com>

I am designing a remote procedure protocol for R, which basically performs a
do.call on data and arguments supplied by a client. However, I am
experiencing unfortunate behavior of the do.call function. The function
do.call seems to serialize all objects in the args list, resulting in an
enormous expression, that is then in some way or another returned by many
functions. A short example:

args <- list(data=cars, formula=dist~speed);
do.call("lm",args);

One can see that for this small example, the returned 'call' attribute is
already huge. Another example:

eval(call("cor.test", x=rnorm(100), y=rnorm(100)))

I completely understand why this happens, yet I was wondering if there is an
alternative to call/do.call that constructs the call in an different way so
that the actual call object is somewhat more compact and does not contain
all the data that was involved in the function. For example one that
attaches the args list in an environment and constructs a call that refers
to these objects or something similar.


--
View this message in context: http://r.789695.n4.nabble.com/call-do-call-expression-too-big-tp3574335p3574335.html
Sent from the R devel mailing list archive at Nabble.com.



[Rd] call / do.call expression too big
Jeroen Ooms