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

Uwe Ligges ligges at statistik.tu-dortmund.de
Sun Nov 22 16:17:57 CET 2009


Either use local as in:

n=10

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

print(n)


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