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 ...

Get The R Book now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.