Try this:
myfunc <- function(...)table(...)
with(mydataset, myfunc(ages, sex))

On Thu, Aug 6, 2009 at 4:50 PM, Polwart Calum (County Durham and Darlington
NHS Foundation Trust) <calum.polwart@nhs.net> wrote:

> I may be doing this wrong!  but I have a function which I have simplified a
> lot below.  I want to pass some 'field names' of a data-frame to the
> function for it to then do some manipulation of.
>
> Here's my code:
> #build a simple dataset
>  mydataset = data.frame (
> ages=c('40-49','40-49','40-49','30-39','50-59','50-59','60-69','50-59'),
>  sex = c("M","F","F","M","F","F","M","M"))
>
> #build a simple function
>  myfunc <- function (categories) {
>   table (categories)
>  }
>
> #call the function
> myfunc (c(mydataset$ages, mydataset$sex))
>
> ===
>
> My output I am getting is:
> categories
> 1 2 3 4
> 5 7 3 1
>
> But what I'm expecting is:
> table (mydataset$ages, mydataset$sex)
>
>        F M
>  30-39 0 1
>  40-49 2 1
>  50-59 2 1
>  60-69 0 1
>
>
> Calling the function as:  myfunc ("mydataset$ages, mydataset$sex") doesn't
> work either and nor does myfunc (c("mydataset$ages", "mydataset$sex"))
>
> Now in the simple version above I could make the function (category1,
> category2) and then call table (category1, category2) - but what if I might
> have a category 3, category 4 etc... How can I pass the dataset name to the
> function without it trying to actually pass the data to the function?  I've
> also tried paste - but perhaps I'm mis-using it?
>
> Many thanks for help in advance
>
>
> ********************************************************************************************************************
>
> This message may contain confidential information. If ...{{dropped:20}}


