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

Golden, Shelby Go|denS @end|ng |rom NJHe@|th@org
Fri Sep 6 22:07:02 CEST 2019

```Thank you all for your reply. I should clarify, that I am looking to understand why the keyword function can take a logical argument (eg: x<4) and use that later inside the function's definition for logical evaluations.

Consider this example, which is a simplification of getAnywhere(subset.data.frame):
x = data.frame("Col1" = c(1, 2, 3, 4, 5), "Col2" = c(6, 7, 8, 9, 10))
test <- function(x, logic){
e <- substitute(logic)
r <- eval(e, x, parent.frame())
r[r]
}

Shelby

﻿On 9/6/19, 1:02 PM, "R-help on behalf of Richard M. Heiberger" <r-help-bounces using r-project.org on behalf of rmh using temple.edu> wrote:

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,
> >>
> >> 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
> >> 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
> >> >
> >> 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
> >> 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
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help