[R] how do I define a function which is equivalent to `deparse(substitute(x))`?
frederik at ofb.net
frederik at ofb.net
Mon Dec 12 02:35:22 CET 2016
Dear R-Help,
I was going to ask Jeff to read the entire works of William
Shakespeare to learn why his reply was not helpful to me...
Then I realized that the answer, as always, lies within...
desub <- function(y) {
e1=substitute(y, environment())
e2=do.call(substitute,list(e1), env=parent.frame())
deparse(e2)
}
Sorry to trouble the list; other solutions still welcome.
Cheers,
Frederick
On Sun, Dec 11, 2016 at 12:46:23AM -0800, Jeff Newmiller wrote:
> No. Read Hadley Wickham's "Advanced R" to learn why not.
> --
> Sent from my phone. Please excuse my brevity.
>
> On December 10, 2016 10:24:49 PM PST, frederik at ofb.net wrote:
> >Dear R-Help,
> >
> >I asked this question on StackOverflow,
> >
> >http://stackoverflow.com/questions/41083293/in-r-how-do-i-define-a-function-which-is-equivalent-to-deparsesubstitutex
> >
> >but thought perhaps R-help would be more appropriate.
> >
> >I want to write a function in R which grabs the name of a variable
> >from the context of its caller's caller. I think the problem I have is
> >best understood by asking how to compose `deparse` and `substitute`.
> >You can see that a naive composition does not work:
> >
> > # a compose operator
> > > `%c%` = function(x,y)function(...)x(y(...))
> >
> > # a naive attempt to combine deparse and substitute
> > > desub = deparse %c% substitute
> > > f=function(foo) { message(desub(foo)) }
> > > f(log)
> > foo
> >
> > # this is how it is supposed to work
> > > g=function(foo) { message(deparse(substitute(foo))) }
> > > g(log)
> > log
> >
> >Is there a way I can define a function `desub` so that `desub(x)` has
> >the same value as `deparse(substitute(x))` in every context?
> >
> >Thank you,
> >
> >Frederick Eaton
> >
> >______________________________________________
> >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >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.
>
More information about the R-help
mailing list