John Mount has a couple of tips around using for loops in R. First up, pre-allocate lists to make certain types of iterative processing faster:
Another R tip. Use
vector(mode = "list")
to pre-allocate lists.result <- vector(mode = "list", 3) print(result) #> [[1]] #> NULL #> #> [[2]] #> NULL #> #> [[3]] #> NULLThe above used to be critical for writing performant R code (R seems to have greatly improved incremental list growth over the years). It remains a convenient thing to know.
Also, use loop indices when iterating through for loops:
Below is an R annoyance that occurs again and again: vectors lose class attributes when you iterate over them in a
for()
-loop.d <- c(Sys.time(), Sys.time()) print(d) #> [1] "2018-02-18 10:16:16 PST" "2018-02-18 10:16:16 PST" for(di in d) { print(di) } #> [1] 1518977777 #> [1] 1518977777Notice we printed numbers, not dates/times.
Very useful information.