# Getting the last n elements of a vector. Is there a better way than using the length() function?

1 view

If for argument's sake, I want the last five elements of a 10-length vector in Python, I can use the "-" operator in the range index so:

>>> x = range(10)

>>> x

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> x[-5:]

[5, 6, 7, 8, 9]

>>>

What is the best way to do this in R? Is there a cleaner way than my current technique which is to use the length() function?

> x <- 0:9

> x

 0 1 2 3 4 5 6 7 8 9

> x[(length(x) - 4):length(x)]

 5 6 7 8 9

The question is related to time series analysis btw where it is often useful to work only on recent data

by (25.3k points)

To print the last n elements of a vector, you can use the tail and head functions as follows:

x <- 1:10

tail(x,5)

  6  7  8  9 10

To print everything but the last five elements:

 1 2 3 4 5

You can also use the following functions:

x[length(x) - (4:0)]

  6  7  8  9 10

x[seq.int(to = length(x), length.out = 5)]

  6  7  8  9 10