[R] [R-devel] Source Code for function

Richard M. Heiberger rmh @end|ng |rom temp|e@edu
Fri Sep 6 21:00:06 CEST 2019


You might also want to look at the codetools package, for example the
showTree function " Prints a Lisp-style representation of R
expression."

> library(codetools)

> showTree(quote(x %*% x))
(%*% x x)
> showTree(quote(a+b))
(+ a b)
> showTree(quote(y ~ a+b))
(~ y (+ a b))

On Fri, Sep 6, 2019 at 2:30 PM Bert Gunter <bgunter.4567 using gmail.com> wrote:
>
> The following may be of use (it gives the parse tree of the text):
>
> > z <- as.list(parse(text = "function(x)x %*% x"))
> > z[[1]]
> function(x) x %*% x
> > z[[c(1,1)]]
> `function`
> > z[[c(1,2)]]
> $x
> > z[[c(1,3)]]
> x %*% x
> > z[[c(1,3,1)]]
> `%*%`
> > z[[c(1,3,2)]]
> x
> > z[[c(1,3,3)]]
> x
>
>
> Bert Gunter
>
>
>
> On Fri, Sep 6, 2019 at 10:14 AM Wang Jiefei <szwjf08 using gmail.com> wrote:
>
> > If you are looking for an R code parser, I think the `parse` and `eval`
> > function might be a good start point. See the example below.
> >
> > > parse(text="function(x)message(x)")
> > expression(function(x)message(x))
> > > eval(parse(text="function(x)message(x)"))
> > function(x)message(x)
> >
> > Best,
> > Jiefei
> >
> > On Fri, Sep 6, 2019 at 12:55 PM Golden, Shelby <GoldenS using njhealth.org>
> > wrote:
> >
> >> Hello Bert,
> >>
> >> Thank you for the reply and your clarifications. Yes, it might be helpful
> >> to look into R’s formal grammar to see how “function” parses input to
> >> delegate correct syntax. Is that accessible online?
> >>
> >> Thank you,
> >> Shelby
> >>
> >>
> >> From: Bert Gunter <bgunter.4567 using gmail.com>
> >> Date: Friday, September 6, 2019 at 10:44 AM
> >> To: "Golden, Shelby" <GoldenS using NJHealth.org>
> >> Cc: "r-help using R-project.org" <r-help using r-project.org>, "Gillenwater, Lucas" <
> >> GILLENWATERL using NJHEALTH.ORG>
> >> Subject: Re: [R] [R-devel] Source Code for function
> >>
> >> 1. This is a plain text list; all html is stripped. So there is no red
> >> highlighting.
> >>
> >> 2. There is no "source code" for "function" -- it is a reserved keyword.
> >> Or are you looking for R's formal grammar -- e.g. how it parses input to
> >> determine correct syntax?
> >>
> >>
> >>
> >> Bert Gunter
> >>
> >> "The trouble with having an open mind is that people keep coming along
> >> and sticking things into it."
> >> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
> >>
> >>
> >> On Fri, Sep 6, 2019 at 8:51 AM Golden, Shelby <GoldenS using njhealth.org
> >> <mailto:GoldenS using njhealth.org>> wrote:
> >> Hi all,
> >>
> >> I have been attempting to access the source code for the keyword
> >> “function” to better understand how it assigns and stores logical inputs,
> >> like in the subset() [base] function. Does anyone know how I can access the
> >> source code for this?
> >>
> >> For example, if I have
> >> norm <- function(x){
> >>       sqrt(x%*%x))
> >> }
> >> I am looking for the source code for the “function” portion, highlighted
> >> in red.
> >>
> >> Thank you for your time and assistance,
> >> Shelby Golden
> >> Lab Researcher Technician
> >> Dr. Russell Bowler’s Lab
> >> Department of Medicine
> >> National Jewish Health in Denver, CO
> >> Phone: (303) 270-2598
> >>
> >> NOTICE: This email message is for the sole use of the intended
> >> recipient(s) and may contain confidential and privileged information. Any
> >> unauthorized review, use, disclosure or distribution is prohibited. If you
> >> are not the intended recipient, please contact the sender by reply email
> >> and destroy all copies of the original message.
> >>         [[alternative HTML version deleted]]
> >>
> >> ______________________________________________
> >> R-help using r-project.org<mailto:R-help using r-project.org> mailing list -- To
> >> UNSUBSCRIBE and more, see
> >> https://stat.ethz.ch/mailman/listinfo/r-help<
> >> http://mx2.njhealth.org:32224/?dmVyPTEuMDAxJiZmMWRiYmMxZjFmNmI5ZDBkMz01RDcyOEQwN18yMjk2OF8zOTk2XzEmJjljNzlmMDA4YWRmZTZjMz0xMjMzJiZ1cmw9aHR0cHMlM0ElMkYlMkZzdGF0JTJFZXRoeiUyRWNoJTJGbWFpbG1hbiUyRmxpc3RpbmZvJTJGci1oZWxw
> >> >
> >> PLEASE do read the posting guide
> >> http://www.R-project.org/posting-guide.html<
> >> http://mx2.njhealth.org:32224/?dmVyPTEuMDAxJiZlMTkwYmMwMzFlNjk4ZTAzNz01RDcyOEQwN18yMjk2OF8zOTk2XzEmJmFkYTkxMWRkMWRhZTFkNz0xMjMzJiZ1cmw9aHR0cCUzQSUyRiUyRnd3dyUyRVItcHJvamVjdCUyRW9yZyUyRnBvc3RpbmctZ3VpZGUlMkVodG1s
> >> >
> >> and provide commented, minimal, self-contained, reproducible code.
> >>
> >>         [[alternative HTML version deleted]]
> >>
> >> ______________________________________________
> >> R-help using 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.
> >>
> >
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using 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