[R] Using objectname in function

Duncan Murdoch murdoch.duncan at gmail.com
Wed Aug 18 13:27:17 CEST 2010


On 18/08/2010 7:10 AM, JesperHybel wrote:
> Is there anyway I can convert a vectors objectname to a string to be used in
> fx:
> 
> Monkey<-c(0,0,0,1,1,1)
> Wax<-c(1,0,1,0,1,0)
> 
> f<-function(x,y){ table(x,y) }
> 
> f(Monkey,Wax)
> 
> so that the printout is not
> 
>    y
> x   0 1
>   0 1 2
>   1 2 1
> 
> but
> 
>           Wax
> Monkey 0 1
>         0 1 2
>         1 2 1
> 
> 

deparse(substitute(x)) will give the expression that was passed as 
argument x in the function.  Getting table() to make use of these is a 
little tricky.  Probably the easiest way is to construct a call using 
do.call():

f <- function(x, y) {
   xname <- deparse(substitute(x))
   yname <- deparse(substitute(y))
   args <- list(x,y)
   names(args) <- c(xname, yname)
   do.call(table, args)
}

Duncan Murdoch



More information about the R-help mailing list