2015-01-15 15 views
2

比方說,有一個包含數字的以下序列的載體sim矢量:如何篩選出遞減值的分區

1 
2 
4 
7 
5 
3 
2.5 
4 
6 

如何才能篩選出遞減值的所有段,從而實現sim只增加值?預期的結果:

1 
2 
4 
7 
2.5 
4 
6 
+0

在你的結果,7至2.5看起來並不像一個增加值。你只想要'1 2 4 7'嗎?或者你是否想過濾它以獲得長度爲2或更大的所有增長值? – 2015-01-15 18:22:01

+1

根據您的要求,最終應該是'c(1,2,4,7,4,6​​)',還是我誤解了您的帖子? – 2015-01-15 18:22:22

+1

如果'2.5'是一個拼寫錯誤,那麼'sim [c(TRUE,diff(sim)> 0)]''。如果條件是'> -1','sim [c(TRUE,diff(sim)> - 1)]' – akrun 2015-01-15 18:24:53

回答

4

基於@ akrun的建議:

dif <- diff(sim) > 0 
sim[ c(dif[1], dif) | c(dif, dif[length(dif)]) ] 
[1] 1.0 2.0 4.0 7.0 2.5 4.0 6.0 
+0

如果遞增值的延伸數大於2,它會起作用嗎? – 2015-01-15 18:46:19

+0

如果我正確理解你的問題,那麼是的。對延伸數量沒有限制,只需添加或移除sim的元素即可。 – 2015-01-15 18:51:30