`for`

loops will be familiar if you have ever used any other programming languages. The basic structure looks like this:

vector <- 1:10 for(i in vector){ #do something with i }

9/11/2018

`for`

loops will be familiar if you have ever used any other programming languages. The basic structure looks like this:

vector <- 1:10 for(i in vector){ #do something with i }

Here is a (slightly) more complicated example.

myVector <- 1:10 for(counter in myVector){ result <- paste("counter ^ 2 = ", counter^2) print(result) }

## [1] "counter ^ 2 = 1" ## [1] "counter ^ 2 = 4" ## [1] "counter ^ 2 = 9" ## [1] "counter ^ 2 = 16" ## [1] "counter ^ 2 = 25" ## [1] "counter ^ 2 = 36" ## [1] "counter ^ 2 = 49" ## [1] "counter ^ 2 = 64" ## [1] "counter ^ 2 = 81" ## [1] "counter ^ 2 = 100"

- We loop over a vector
`1:100`

, and sequentially assign its values to a temporary variable we are calling`counter`

. (Note: we can call this variable whatever we want.) - Then R does what is within the curly braces
`{}`

for each iteration of the loop. In this case, it pastes together some text with the square of the value of

`counter`

and prints this all to the console.After running the above code, what is the value of

`counter`

? What is the value of`myVector`

? Has this value changed?

- Create a results vector in advance that is the same length as the vector we are looping over
- Then save the results each time in the appropriate slot.

integers <- c(10, 9, 8) results <- numeric(3) for(i in 1:length(results)){ results[i] <- integers[i] + 1 } results

## [1] 11 10 9

note…this is a great example of an unnecessary for() loop!

`if`

statements- Often during a loop, you may want to do diffent things based on a test
- Imagine a vector of germination outcomes from a seed experiment.
- 0 indicates the seed did not germinate
- 1 indicates that the seed germinated

- We can use the
`if()`

function to evaluate the outcome and provide context specific output.

outcomes <- c(0,1,0,1,0,1,0,1,0,1,0,1,0,0) for(trial in outcomes){ if(trial == 1) print("Welcome to the world, plantling!") else print("RIP") }

## [1] "RIP" ## [1] "Welcome to the world, plantling!" ## [1] "RIP" ## [1] "Welcome to the world, plantling!" ## [1] "RIP" ## [1] "Welcome to the world, plantling!" ## [1] "RIP" ## [1] "Welcome to the world, plantling!" ## [1] "RIP" ## [1] "Welcome to the world, plantling!" ## [1] "RIP" ## [1] "Welcome to the world, plantling!" ## [1] "RIP" ## [1] "RIP"

Write a `for`

loop to show how, as sample size increases, estimates of the mean of a population converge on the true value (this is known as the *law of large numbers*)

- create a numeric results vector of length 2000
- loop over each integer
`i`

from 1 to 2000 - at each iteration use the
`rnorm()`

function to simulate a sample of size`i`

from a population with a mean of 100 and standard deviation of 30. - calculate the mean of this sample, and be sure to save these results to the appropriate place in the results vector
- finally, make a plot of the results with the integers 1 to 2000 on the x axis, and the corresponding value from the results vector on the y axis