Many thanks Bert! You are a big help!!


On Fri, Oct 18, 2013 at 1:25 PM, Bert Gunter <gunter.berton@gene.com> wrote:

> That's because I screwed up! I gave you the wrong function, "f" instead of
> "g" .
>
> Here's g:
>
> g <- function(...){
>   sapply(as.list(match.call())[-1],deparse)
> }
>
> and the example should now work.
>
> Sheepishly,
>
> -Bert
>
>
> On Fri, Oct 18, 2013 at 10:21 AM, Dan Abner <dan.abner99@gmail.com> wrote:
> > Hi Bert,
> >
> > Thank you for the code.
> >
> > However, I don't see what I am doing different, but my output is
> different.
> > I would much rather have output similar to yours where only the input
> > objects are returned (instead of the fn name, the encapsulating
> parentheses,
> > etc.):
> >
> >
> >> d1<-data.frame(x1=runif(100),x2=runif(100))
> >> d2<-data.frame(x3=runif(100),x4=runif(100))
> >> d3<-data.frame(x5=runif(100),x6=runif(100))
> >>
> >> set1 <- function(...,by){
> > +     df.name <<- list(...)
> > +     name1<<-deparse(match.call())
> > + }
> >>
> >> set1(d1,d2,d3)
> >>
> >> name1
> > [1] "set1(d1, d2, d3)"
> >>
> > Another application (with example data too large to email) gives:
> >
> >> name1
> > [1] "matx.set(df1, df2, df3, df4, df5, df6, by = \"ID\")"
> >
> > Is there a simple way to just get:
> >
> > "df1" "df2" "df3" "df4" "df5" "df6"
> >
> > Thanks!
> >
> > Dan
> >
> >
> >
> > On Fri, Oct 18, 2013 at 1:07 PM, Bert Gunter <gunter.berton@gene.com>
> wrote:
> >>
> >> 1. Always cc to the list unless it is truly a private offlist reply.
> >> This is to get help from a wider audience, as may well be required
> >> here. Translation: Take my "solution" with a grain of salt. It is
> >> fragile at best.
> >>
> >> 2. I think ?match.call and ?deparse are what you're looking for:
> >>
> >> f <- function(...){
> >>   deparse(match.call())
> >> }
> >>
> >> > g(a,b,sqrt(c(1,2,5)))
> >> [1] "a"                "b"                "sqrt(c(1, 2, 5))"
> >>
> >> Cheers,
> >> Bert
> >>
> >>
> >>
> >>
> >> On Fri, Oct 18, 2013 at 9:36 AM, Dan Abner <dan.abner99@gmail.com>
> wrote:
> >> > Hi Bert,
> >> >
> >> > Thanks for your response. Please see example below:
> >> >
> >> >
> >> > d1<-data.frame(x1=runif(100),x2=runif(100))
> >> > d2<-data.frame(x3=runif(100),x4=runif(100))
> >> > d3<-data.frame(x5=runif(100),x6=runif(100))
> >> > set1 <- function(...,by){
> >> >     df.name <<- list(...)
> >> >     name1<<-names(list(...))
> >> > }
> >> >
> >> > set1(d1,d2,d3)
> >> >
> >> > I need to be able to recover whatever input data frame names that the
> >> > user
> >> > passes to set1() (preferably in the character vector).
> >> >
> >> >> name1
> >> > NULL
> >> >
> >> > Here is another possible call to the fn:
> >> >
> >> > set1(d1,d2)
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > On Fri, Oct 18, 2013 at 12:26 PM, Bert Gunter <gunter.berton@gene.com
> >
> >> > wrote:
> >> >>
> >> >> I'm not exactly sure what you mean by "names." Does the following
> meet
> >> >> your needs?
> >> >>
> >> >> f <- function(...)names(list(...))
> >> >>
> >> >> > f(a=2,b=3)
> >> >> [1] "a" "b"
> >> >> > f(a=2,3)
> >> >> [1] "a" ""
> >> >>
> >> >> If not, a reproducible example of what you want might be helpful.
> >> >>
> >> >> Cheers,
> >> >> Bert
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> On Fri, Oct 18, 2013 at 9:05 AM, Dan Abner <dan.abner99@gmail.com>
> >> >> wrote:
> >> >> > Hi all,
> >> >> >
> >> >> > I am using the ... argument to parmeterize a user define fn to
> accept
> >> >> > multiple input objects. I subsquently save all these data as a
> list.
> >> >> > Question: what is the best way to recover or extract the original
> >> >> > object
> >> >> > names that were fed to the fn?
> >> >> >
> >> >> > Thanks,
> >> >> >
> >> >> > Dan
> >> >> >
> >> >> >         [[alternative HTML version deleted]]
> >> >> >
> >> >> > ______________________________________________
> >> >> > R-help@r-project.org mailing list
> >> >> > https://stat.ethz.ch/mailman/listinfo/r-help
> >> >> > PLEASE do read the posting guide
> >> >> > http://www.R-project.org/posting-guide.html
> >> >> > and provide commented, minimal, self-contained, reproducible code.
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >>
> >> >> Bert Gunter
> >> >> Genentech Nonclinical Biostatistics
> >> >>
> >> >> (650) 467-7374
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >>
> >> Bert Gunter
> >> Genentech Nonclinical Biostatistics
> >>
> >> (650) 467-7374
> >
> >
>
>
>
> --
>
> Bert Gunter
> Genentech Nonclinical Biostatistics
>
> (650) 467-7374
>

	[[alternative HTML version deleted]]

