[R] Function redefinition - not urgent, but I am curious

Dimitris Rizopoulos dimitris.rizopoulos at med.kuleuven.be
Fri Apr 18 14:57:05 CEST 2008


you could define 'f1' inside 'f2' or assign 'f1' to a new environemnt 
(or use local()):

# 1st
f2 <- function(x){
    f1 <- function(x) x + 1
    2 * f1(x)
}

f2(10)
f1 <- function(x) x - 1
f2(10)

# 2nd
myenv <- new.env()
assign("f1", function(x) x + 1, myenv)
f2 <- function(x){
    f1 <- get("f1", envir = myenv)
    2 * f1(x)
}
f1 <- function(x) x - 1
f2(10)


I hope it helps.

Best,
Dimitris

----
Dimitris Rizopoulos
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://med.kuleuven.be/biostat/
     http://www.student.kuleuven.be/~m0390867/dimitris.htm


----- Original Message ----- 
From: "Alberto Monteiro" <albmont at centroin.com.br>
To: <r-help at r-project.org>
Sent: Friday, April 18, 2008 2:22 PM
Subject: [R] Function redefinition - not urgent, but I am curious


> This is just my curiousity working.
>
> Suppose I write:
>
> f1 <- function(x) x + 1
> f2 <- function(x) 2 * f1(x)
> f2(10)
> # 22
> f1 <- function(x) x - 1
> f2(10)
> # 18
>
> This is quite obvious. But is there any way to define f2
> in such a way that we "freeze" the definition of f1?
>
> f1 <- function(x) x + 1
> f2 <- function(x)
> # put something here
> 2 * f1(x)
> # probably put something else here too
>
> f2(10)
> # 22
> f1 <- function(x) x - 1
> f2(10)
> # 22 - f1 inside f2 does not change
>
> Alberto Monteiro
>
> ______________________________________________
> R-help at 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.
> 


Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm



More information about the R-help mailing list