[R] for loop help

Greg Snow Greg.Snow at imail.org
Fri Apr 11 17:57:21 CEST 2008


Tom,

Bill Venables gave you references to important tools for dealing with
for loops in R and they may be all the solution that you need.  But here
is a little more  detail on what is going on in case you want/need more
control in the future.

Note that the R for loop is what some programers call a foreach loop,
meaning that rather than specifying an init, a test, and an increment
(like C), you give the loop a vector of values and it loops through that
vector using all the values regaurdless of what changes are made.

In C, the for loop:

for( init; test; inc ){ ... }

Is just shorthand for:

init;
while( test ){
 ...
 inc
}

R also has the while loop, so you can write a C style for loop in R by
doing something like:

> i <- 1
> while( i <= 13 ){
+ print(i)
+ i <- i + 1
+ }
>

And if you insert i=12 into that, then it will behave how you describe.

'next' and 'break' also work with while loops to give even more
control/options.

Hope this helps,


-- 
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
(801) 408-8111
 
 

> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of 
> Bill.Venables at csiro.au
> Sent: Thursday, April 10, 2008 9:38 PM
> To: tom.soyer at gmail.com; r-help at r-project.org
> Subject: Re: [R] for loop help
> 
> > ?`break`
> > ?`next`
> 
> > for(i in 1:13) {
>     if(i < 13) next
>     print("Hello!\n")
>     }
> [1] "Hello!\n"
> > 
> 
> 
> Bill Venables
> CSIRO Laboratories
> PO Box 120, Cleveland, 4163
> AUSTRALIA
> Office Phone (email preferred): +61 7 3826 7251 Fax (if 
> absolutely necessary):  +61 7 3826 7304
> Mobile:                         +61 4 8819 4402
> Home Phone:                     +61 7 3286 7700
> mailto:Bill.Venables at csiro.au
> http://www.cmis.csiro.au/bill.venables/ 
> 
> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org]
> On Behalf Of tom soyer
> Sent: Friday, 11 April 2008 12:26 PM
> To: r-help at r-project.org
> Subject: [R] for loop help
> 
> Hi,
> 
> I am trying to find a solution in R for the following C++ 
> code that allows one to skip ahead in the loop:
> 
> for (x = 0; x <= 13; x++){
>  x=12;
>  cout << "Hello World";
> }
> 
> Note that "Hello World" was printed only twice using this C++ 
> loop. I tried to do the same in R:
> 
> for(i in 1:13){
>  i=12
>  print("Hello World")
> }
> It doesn't work as I expected, i.e., this R loop prints 
> "Hello World" 13 times.
> 
> Does anyone know how to do it in R?
> 
> Thanks,
> 
> --
> Tom
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> 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.
> 
> ______________________________________________
> 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