What are examples of when seq_along works, but seq produces unintended results?
r, seq
Solution
This should make the difference clear. Basically, `seq()` acts like `seq_along()` except when passed a vector of length 1, in which case it acts like `seq_len()`. If this ever once bites you, you'll never use `seq()` again!
a <- c(8, 9, 10)
b <- c(9, 10)
c <- 10
seq_along(a)
# [1] 1 2 3
seq_along(b)
# [1] 1 2
seq_along(c)
# [1] 1
seq(a)
# [1] 1 2 3
seq(b)
# [1] 1 2
seq(c)
# [1] 1 2 3 4 5 6 7 8 9 10
It's probably worth noting that `sample()` exhibits similarly crummy behavior:
sample(a)
# [1] 10 8 9
sample(b)
# [1] 9 10
sample(c)
# [1] 8 7 9 3 4 1 6 10 2 5
Problem
What are good examples of when `seq_along` will work, but `seq` will produce unintended results? From the documentation of `?seq` we have: Note that it dispatches on the class of the first argument irrespective of argument names. This can have unintended consequences if it is called with just one argument intending this to be taken as `along.with`: it is much better to use `seq_along` in that case.