Alberto Monteiro
2008-Apr-18 12:22 UTC
[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
Gabor Grothendieck
2008-Apr-18 12:47 UTC
[R] Function redefinition - not urgent, but I am curious
Try f2 <- local({f1 <- f1; function(x) 2 * f1(x) }) On Fri, Apr 18, 2008 at 8:22 AM, Alberto Monteiro <albmont at centroin.com.br> wrote:> 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. >
Dimitris Rizopoulos
2008-Apr-18 12:57 UTC
[R] Function redefinition - not urgent, but I am curious
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
Richard.Cotton at hsl.gov.uk
2008-Apr-21 07:58 UTC
[R] Function redefinition - not urgent, but I am curious
> 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 f1frozen <- f1 f2 <- function(x) 2*f1frozen(x) f2(10) # 22 f1 <- function(x) x-1 f2(10) # 22 Regards, Richie. Mathematical Sciences Unit HSL ------------------------------------------------------------------------ ATTENTION: This message contains privileged and confidential inform...{{dropped:20}}