2013-02-15 83 views
7

这可能是多余的,但我无法在SO上找到类似的问题。R获取最后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中有类似的东西吗?谢谢!

回答

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 
+5

加一,并希望为未来的搜索者提供'tail'和'head'的良好负向索引属性。你可以说:“给我所有,但最后n个元素/行”,如:head(foo,-2)' – 2013-02-15 19:12:45

+1

@TylerRinker好点 - 这是很好的信息,我将它添加到答案。 – Dason 2013-02-15 19:19:23

3

不是当你有真棒尾巴的功能,但这里是个好主意是一个另类:

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

我准备自己的下票。

+0

+1,用于聪明地使用'rev'。还避免使用长度(foo)。为什么R不像Python那样使用'len'而不是'length'?节省50%的打字费用。 – harkmug 2013-02-15 19:29:09

+0

我喜欢第一个,但第二个显然是他们在原始问题中试图避免的。 – Dason 2013-02-15 19:29:40

+0

@Dason好点我删除它,因为海报明确表示他们不屑的长度。 – 2013-02-15 19:32:46

相关问题