On 8/6/2009 4:11 PM, Ivo Shterev wrote:
Hi,

The intention is that after executing f2, the value of i to become 1.

f1 = function(i){i = 1}

f2 = function(n){  i = length(n)
f1(i)
print(i)}

i.e. f2 should print 1, not length(n).

ivo


--- On Thu, 8/6/09, Steve Lianoglou <mailinglist.honey...@gmail.com> wrote:

From: Steve Lianoglou <mailinglist.honey...@gmail.com>
Subject: Re: [R] A question regarding R scoping
To: "Ivo Shterev" <idc...@yahoo.com>
Cc: r-help@r-project.org
Date: Thursday, August 6, 2009, 3:07 AM
Hi,

On Aug 5, 2009, at 5:55 PM, Ivo Shterev wrote:

> I have a question related to scoping. Suppose we have
2 functions:
> > f1 = function(i){i = 1} > > f2 = function(n){
> i = length(n)
> f1(i)
> }
> > In other words, I would like i=1 regardless of n. Is
this possible without having f1 in the body of f2? Thanks in
advance!

It is possible by messing around with Sys.frame(), but a really bad idea. There are two variables named i: one local to f1, and another local to f2. Since f2 has no lexical relation to f1, things happening locally there should not affect f1.

Duncan Murdoch




Uhm ... what? You want i = 1 where, exactly? You want to
call to f1(i) to set i to 1 in f2?

Sorry, I don't really follow. Can you be a bit more
explicit?

-steve

--
Steve Lianoglou
Graduate Student: Computational Systems Biology
  |  Memorial Sloan-Kettering Cancer Center
  |  Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact






______________________________________________
R-help@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.

______________________________________________
R-help@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.

Reply via email to