[R] How to make the assignment in a for-loop not affect variables outside the loop?

Peng Yu pengyu.ut at gmail.com
Thu Dec 10 05:03:11 CET 2009


2009/11/22 Uwe Ligges <ligges at statistik.tu-dortmund.de>:
> Either use local as in:
>
> n=10
>
> local(for(i in 1:n){
>     n=3
>     print(n)
> })
>
> print(n)

'local()' makes everything inside it unavailable outside of it. Is
there a way to make 'n' unavailable outside but still make 'b'
available outside without using 'function'?

n=10
b=1
local(
    for(i in 1:n) {
      n=3
      print(n)
      b=b*i
    }
    )

print(n)
print(b)


> or write a function that is evaluated in its own environment:
>
> n=10
>
> MyLoopFoo <- function(){
>    for(i in 1:n){
>        n <- 3
>        print(n)
>    }
> }
>
> MyLoopFoo()
>
> print(n)
>
>
>
>
> Uwe Ligges
>
>
> Peng Yu wrote:
>>
>> I know that R is a dynamic programming language. But I'm wondering if
>> there is a way to make the assignment in a for-loop not affect
>> variables outside the loop.
>>
>>> n=10
>>> for(i in 1:n){
>>
>> +     n=3
>> +     print(n)
>> + }
>> [1] 3
>> [1] 3
>> [1] 3
>> [1] 3
>> [1] 3
>> [1] 3
>> [1] 3
>> [1] 3
>> [1] 3
>> [1] 3
>>>
>>> print(n)
>>
>> [1] 3
>>
>> ______________________________________________
>> 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