[R] Function that operates on functions: it's ok, but the display isn't

Gabor Grothendieck ggrothendieck at gmail.com
Tue Oct 10 22:16:41 CEST 2006


You need to substitute it into yourself.  Also note that
displaying a function will display its source attribute
which may get unsynchronized with the actual function
if the function was constructed yourself so NULL it out
to be sure what you are seeing is what the unction
actually is:

# g is the function that returns the square of a number
g <- function(y) y^2

> # f1 is a function that takes one function
> # as argument, and returns another function
> f1 <- function(f) function(x) f(x+1) - f(x)
>
> # h(x) is g(x+1) - g(x) or 2x + 1
> h <- f1(g)
> h
function(x) f(x+1) - f(x)
<environment: 0x01e79470>
>
> f2 <- function(f) eval(substitute(function(x) f(x+1) - f(x)))
> h2 <- f2(g)
> h2  # this is displaying the source attribute, not the actual function
function(x) f(x+1) - f(x)
<environment: 0x01e75494>
> attr(h2, "source") <- NULL
> h2 # now we are seeing the actual function
function (x)
g(x + 1) - g(x)
<environment: 0x01e75494>



On 10/10/06, Alberto Monteiro <albmont at centroin.com.br> wrote:
> The following code works fine:
>
> # g is the function that returns the square of a number
> g <- function(y) y^2
>
> # f1 is a function that takes one function
> # as argument, and returns another function
> f1 <- function(f) function(x) f(x+1) - f(x)
>
> # h(x) is g(x+1) - g(x) or 2x + 1
> h <- f1(g)
>
> # h(1) = 3
> # h(2) = 5
> # h(3) = 7
>
> So far, so good. But why:
>
> h
>
> shows:
>
> function(x) f(x+1)-f(x)
> <environment: 0264BE84>
>
> I don't get it. h should show function(x) g(x+1)-g(x)
> or something like that.
>
> Alberto Monteiro
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
>



More information about the R-help mailing list