O'Reilly logo

The R Book by Michael J. Crawley

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Loops and Repeats

The classic, Fortran-like loop is available in R. The syntax is a little different, but the idea is identical; you request that an index, i, takes on a sequence of values, and that one or more lines of commands are executed as many times as there are different values of i. Here is a loop executed five times with the values of i from 1 to 5: we print the square of each value:

for (i in 1:5) print(i∧2)

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25

For multiple lines of code, you use curly brackets {} to enclose material over which the loop is to work. Note that the ‘hard return’ (the Enter key) at the end of each command line is an essential part of the structure (you can replace the hard returns by semicolons if you like, but clarity is improved if you put each command on a separate line):

j<-k<-0
for (i in 1:5) {
j<-j+1
k<-k+i*j
print(i+j+k) }

[1] 3
[1] 9
[1] 20
[1] 38
[1] 65

Here we use a for loop to write a function to calculate factorial x (written x!) which is

images

So 4! = 4 × 3 × 2 = 24. Here is the function:

fac1<-function(x) {
         f<-1
         if (x<2) return (1)
         for (i in 2:x) {
         f<-f*i
         f}}

That seems rather complicated for such a simple task, but we can try it out for the numbers 0 to 5:

sapply(0:5,fac1)

[1] 1 1 2 6 24 12 0

There are two other looping functions in R: repeat and while. We demonstrate their use for the purpose of illustration, but we can do much better in terms ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required