Search code examples
rsequenceseq

What is the defference between seq() and sequence() in R?


I am new to R and am wondering what is the difference between seq() and sequence(). Both entered into R give different results:

> seq(c(10,5))
[1] 1 2
> sequence(c(10,5))
 [1]  1  2  3  4  5  6  7  8  9 10  1  2  3  4  5

Can anyone help me with this?


Solution

  • A good place to start if you have questions is to take a look at the help files using the help() or ? commands.

    If you look at the help file from ?seq, it will say that it usually takes some arguments:

    ## Default S3 method:
    seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),
        length.out = NULL, along.with = NULL, ...)
    

    So if you do something like seq(from = 1, to = 10) or seq(1, 10), it will give you a vector from 1 to 10:

    seq(1, 10)
    [1] 1  2  3  4  5  6  7  8  9  10
    

    Your usage of seq() is not seen much, but the behavior is documented lower down in the help file

    [seq(from)] generates the sequence 1, 2, ..., length(from) (as if argument along.with had been specified), unless the argument is numeric of length 1 [...]

    Therefore, seq(c(1, 10)) will output a sequence of "1, 2" because the only argument it was given was a vector of length 2.

    The behavior of sequence() is more straight-forward, and is explained succinctly in the help file (accessed from ?sequence). Also, an example of the behavior is shown at the bottom of the help file.

    sequence(c(3, 2)) # the concatenated sequences 1:3 and 1:2.
    #> [1] 1 2 3 1 2
    

    Welcome to the wonderful, yet quirky, world of programming in R. I suggest you learn the basics of the R language first, and look to the help files and documentation before asking basic questions, reserving stackoverflow as a resource for resolving more difficult programming questions.