[R] A question regarding R scoping

Duncan Murdoch murdoch at stats.uwo.ca
Thu Aug 6 22:19:07 CEST 2009


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.honeypot at gmail.com> wrote:
> 
>> From: Steve Lianoglou <mailinglist.honeypot at gmail.com>
>> Subject: Re: [R] A question regarding R scoping
>> To: "Ivo Shterev" <idc318 at yahoo.com>
>> Cc: r-help at 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 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.




More information about the R-help mailing list