Want to share your content on R-bloggers? click here if you have a blog, or here if you don't. Using loops is generally discouraged in R when it is possible to avoid them using vectorized alternatives. Vectorized solution are be both faster to write, read and execute – except sometimes they aren’t and the definition of vectorization isn’t always straightforward.

In any event, solutions using loops can be:

• The fastest to prototype
• The easiest to understand for people coming from other programming language
• Impossible to avoid – the only way to solve a specific problem.

Furthermore, loops are a great tool to play around with in order to gain a deeper understanding of R.

Solutions are available here.

Exercise 1

Write a for loop that iterates over the numbers 1 to 7 and prints the cube of each number using `print()`.

Exercise 2

Write a for loop that iterates over the column names of the inbuilt iris dataset and print each together with the number of characters in the column name in parenthesis. Example output: `Sepal.Length (12)`. Use the following functions `print()`, `paste0()` and `nchar()`.

Exercise 3

Write a while loop that prints out standard random normal numbers (use `rnorm()`) but stops (breaks) if you get a number bigger than 1.

Exercise 4

Using `next` adapt the loop from last exercise so that doesn’t print negative numbers.

Exercise 5

Using a for loop simulate the flip a coin twenty times, keeping track of the individual outcomes (1 = heads, 0 = tails) in a vector that you preallocte.

Exercise 6

Use a nested for loop (a for loop inside a for loop) that produces the following matrix, preallocate the matrix with `NA` values.

```    0     1     2     3     4
1     0     1     2     3
2     1     0     1     2
3     2     1     0     1
4     3     2     1     0
```

Exercise 7

Use a while loop to investigate the number of terms required before the product

1⋅2⋅3⋅4⋅…

reaches above 10 million.

Exercise 8

Use a while loop to simulate one stock price path starting at 100 and random normally distributed percentage jumps with mean 0 and standard deviation of 0.01 each period. How long does it take to reach above 150 or below 50?

Exercise 9

Implement a simple version of Guess the number game using a while loop. The user should guess a number between 1 and 10, you can use `scan()` to get user input. The loop should break if the user guesses 5.

Exercise 10

Implement a multiplication game. A while loop that gives the user two random numbers from 2 to 12 and asks the user to multiply them. Only exit the loop after five correct answers. Try using `as.integer(readline())` instead of `scan()` this time.

If you enjoyed this exercise set you might also enjoy Writing custom functions or Answer probability questions with simulation.

(Image by Nicolas Raymond)