Passing parameter to a function
Hi Duncan,
Yes, A and B are columns in D. Having said that I and trying to avoid
tab(D$A,D$B)
and I would prefer:
tab(A,B)
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:
function(x,y){
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?
Thanks,
Luca
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