R Tip: Use seq_len() to Avoid The Backwards Sequence Bug
Win-Vector Blog 2018-02-19
Another R tip. Use seq_len() to avoid The backwards seqeunce bug.
Many R users use the “colon sequence” notation to build sequences. For example:
for(i in 1:5) {
print(paste(i, i*i))
}
#> [1] "1 1"
#> [1] "2 4"
#> [1] "3 9"
#> [1] "4 16"
However, the colon notation can be unsafe as it does not properly handle the empty sequence case:
n <- 0 1:n #> [1] 1 0
Notice the above example built a reversed sequence, instead of an empty sequence. To avoid this use seq_len():
seq_len(5) #> [1] 1 2 3 4 5 n <- 0 seq_len(n) #> integer(0)
“integer(0)” is a length zero sequence of integers (not a sequence containing the value zero).