[R] Passing parameter to a function

Luca Meyer lucam1968 at gmail.com
Mon Dec 20 20:02:49 CET 2010

Hi Duncan,

Yes, A and B are columns in D. Having said that I and trying to avoid 


and I would prefer:


Unfortunately the syntax you suggest is giving me the same error:

Error in eval(expr, envir, enclos) : object "A" not found

I have tried to add some deparse() but I have got the error over again. The last version I have tried:

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

gives me another error:

Error in terms.formula(formula, data = data) : 
  formula models not valid in ExtractVars 

Any idea on how I should modify the function to make it work?


Il giorno 20/dic/2010, alle ore 19.28, Duncan Murdoch ha scritto:

> 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

More information about the R-help mailing list