2013-02-15 89 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

相關問題