[R] passing arguments to functions within functions
Daniel E. Bunker
deb37 at columbia.edu
Wed Oct 17 20:57:54 CEST 2007
Duncan,
Thanks for your reply. Here is a simplified version. What I really
want to be able to do is summarize same data (using 'summarize') and
pass those results to 'xYplot' for plotting, all in one wrapper.
For this example, I am simply trying to call 'summarize' from within
another function. The question is how to pass the arguments to
'summarize'.
(Note I am on OS X using R 2.5.1)
Any help would be greatly appreciated.
Thanks, Dan
# some example data
df=expand.grid(rep=1:4, fac1=c("a","b"), fac2=c("c","d"), fac3=c
("e","f"))
df$resp1=rnorm(length(df$fac1))
df
# what I would like to do inside another function
resp="resp1"; fac="fac1"
sumdf4=summarize(X=df[,resp], by=llist(df[,fac]), FUN=mean)
# but how do I name the arguments in both the function and the
funtion call?
# in the call to "summarize", I want the summarize argument "X" to be
the dataframe vector df[, resp1]
# and the "by" variable to be df[, fac1]
# I want to be able to name them by the column name (ie, resp1, not df
$resp1) so that I can then call
# xYplot on the relulting dataframe sumdf4, using the formula
"resp1~fac1", or the arguments that point to those names
xYerrbar=function(resp, fac, data) {
require("Hmisc")
sumdf4=summarize(X=resp, by=llist(fac), FUN=mean)
}
xYerrbar(resp=resp1, fac=fac1, data=df) # Error in llist(fac) :
object "fac1" not found
# I have also tried this to no avail
xYerrbar=function(resp, fac, data) {
require("Hmisc")
sumdf4=summarize(X=eval(resp, data), by=llist(eval(fac, data)),
FUN=mean)
}
On Oct 17, 2007, at 1:49 PM, Duncan Murdoch wrote:
> On 10/17/2007 1:12 PM, Daniel E. Bunker wrote:
> > Dear R Users,
> >
> > I am trying to write a wrapper around summarize and xYplot from
> Hmisc
> > and am having trouble understanding how to pass arguments from the
> > function I am writing to the nested functions.
> >
> > There must be a way, but I have not been able to figure it out.
> >
> > An example is below.
>
> I think you need to simplify your example. I can't tell what you
> want to do.
>
> It would be helpful if you gave us a simpler example showing what
> you'd like to use as arguments to your function, and what you'd
> like the function it calls to see. Then you'll probably get
> several suggestions of how to do it.
>
> Duncan Murdoch
More information about the R-help
mailing list