Web EndMemo

### R For Loop Example

Unlike other program languages, the for loop of R language can be write as `for (i in arr) {expr1; expr2 ...}`. It goes through the vector arr every time one element i, and execute a group of commands inside the { ... } in each cycle. The `break` statement can be used to terminate the loop abruptly. If you don't want to terminate the whole loop, but just ignore current cycle, the `next` statement can do that.

Let's create a vector containing number 1-10:
```>samples <- c(rep(1:10))
>samples
```
``` [1]  1  2  3  4  5  6  7  8  9 10
```

Go through the samples one by one and print them out:
```>for (thissample in samples)
+{
+   print(thissample)
+}
```
```[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
```

Let's do something inside the for loop:
```>for (thissample in samples)
+{
+    str <- paste(thissample,"is current sample",sep=" ")
+    print(str)
+}
```
```[1] "1 is current sample"
[1] "2 is current sample"
[1] "3 is current sample"
[1] "4 is current sample"
[1] "5 is current sample"
[1] "6 is current sample"
[1] "7 is current sample"
[1] "8 is current sample"
[1] "9 is current sample"
[1] "10 is current sample"
```

Let's terminate the loop when the sample is 3:
```>for (thissample in samples)
+{
+    if (thissample == 3) break
+    str <- paste(thissample,"is current sample",sep=" ")
+    print(str)
+}
```
```[1] "1 is current sample"
[1] "2 is current sample"
```

Let's ignore when the sample number is even:
```>for (thissample in samples)
+{
+    if (thissample %% 2 == 0) next
+    str <- paste(thissample,"is current sample",sep=" ")
+    print(str)
+}
```
```[1] "1 is current sample"
[1] "3 is current sample"
[1] "5 is current sample"
[1] "7 is current sample"
[1] "9 is current sample"
```

Let's just loop through last three samples:
```>end <- length(samples)
>begin <- end - 2
>for (thissample in begin:end)
+{
+    str <- paste(thissample,"is current sample",sep=" ")
+    print(str)
+}
```
```[1] "8 is current sample"
[1] "9 is current sample"
[1] "10 is current sample"
```