8

这可能是多余的,但我在 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中有类似的东西吗?谢谢!

4

2 回答 2

15

你想要的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

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

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
于 2013-02-15T19:08:07.977 回答
2

当您拥有出色的尾部功能时,这不是一个好主意,但这里有一个替代方案:

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

我正在为反对票做准备。

于 2013-02-15T19:25:16.320 回答