R获取向量中最后n个条目的快捷方式

时间:2013-02-15 19:06:02

标签: arrays r vector indexing

这可能是多余的,但我在SO上找不到类似的问题。

是否有快捷方式在计算中不使用向量的长度来获取向量或数组中的最后 n 元素/条目?

foo <- 1:23

> foo
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

假设有人想要最后7个实体,我想避免这种繁琐的语法:

> foo[(length(foo)-6):length(foo)]
[1] 17 18 19 20 21 22 23

Python有foo[-7:]。 R中有类似的东西吗?谢谢!

2 个答案:

答案 0 :(得分:13)

您需要tail功能

foo <- 1:23
tail(foo, 5)
#[1] 19 20 21 22 23
tail(foo, 7)
#[1] 17 18 19 20 21 22 23
x <- 1:3
# If you ask for more than is currently in the vector it just
# returns the vector itself.
tail(x, 5)
#[1] 1 2 3

除了head之外,还有一些简单的方法可以获取除了向量的最后/前n个元素之外的所有内容。

x <- 1:10
# Grab everything except the first element
tail(x, -1)
#[1]  2  3  4  5  6  7  8  9 10
# Grab everything except the last element
head(x, -1)
#[1] 1 2 3 4 5 6 7 8 9

答案 1 :(得分:2)

当你拥有令人敬畏的尾部功能时不是一个好主意,但这里有另一种选择:

n <- 3
rev(rev(foo)[1:n])

我正在为自己的选票做准备。