[R] Passing parameter to a function

Duncan Murdoch
Mon, 20 Dec 2010 18:28:17 -0000

On 20/12/2010 1:13 PM, Luca Meyer wrote:
> I am trying to pass a couple of variable names to a xtabs formula:
>
> >  tab<- function(x,y){
>      xtabs(time~x+y, data=D)
> }
>
> But when I run:
>
> >  tab(A,B)
>
> I get:
>
> Error in eval(expr, envir, enclos) : object "A" not found
>
> I am quite sure that there is some easy way out, but I have tried with
different combinations of deparse(), substitute(), eval(), etc without success,
can someone help?

I assume that A and B are columns in D?  If so, you could use

tab(D$A, D$B)

to get what you want.  If you really want tab(A,B) to work, you'll need
to do messy work with substitute, e.g. in the tab function, something like

fla <- substitute(time ~ x + y, list(x = substitute(x), y = substitute(y))
xtabs(fla, data=D)

Duncan Murdoch