Using apply-family functions
Previously, we talked about using a for loop to repeat evaluating an expression with an iterator on a vector or list. In practice, however, the for loop is almost the last choice because an alternative way is much cleaner and easier to write and read when each iteration is independent of each other.
For example, the following code uses for to create a list of three independent, normally distributed random vectors whose length is specified by vector len:
len <- c(3, 4, 5)
# first, create a list in the environment.
x <- list()
# then use `for` to generate the random vector for each length
for (i in 1:3) {
x[[i]] <- rnorm(len[i])
}
x
## [[1]]
## [1] 1.4572245 0.1434679 -0.4228897
##
## [[2]]
## [1] -1.4202269 -0.7162066 -1.6006179 -1.2985130
##
## [[3]]
## [1] -0.6318412 1.6784430 0.1155478 0.2905479 -0.7363817
The preceding example is simple, but the code is quite redundant...