Re: [問題] 找出向量的轉折處回傳index
※ 引述《sinclairJ (SunnyGymBoy)》之銘言:
: 問題:找出向量的三個轉折處然後回傳此三個index及該值
: 問題說明:如果今有一向量
: v=c(1,2,3,4,5,6,7,6,5,4,3,2,1,2,3,4,5,6,7,6,5)
: * * *
: 我希望能回傳index=7,13,19 value=7,1,7
: 目前想到的解決方法就是用後面的數字減前面的數字 然後看哪個index出現負值
: 但這個方法好像只能偵測一向量1index
: 對於要找出一向量3index 還沒想到該怎麼做
: 有勞各位前輩指導解惑 感謝~
其實想到diff跟出現小於0已經快得到答案了XD
最後就是比看看跟前面是不是一樣是負的
v=c(1,2,3,4,5,6,7,6,5,4,3,2,1,2,3,4,5,6,7,6,5)
tmp = diff(v) < 0
(index = which(tmp[-1L] != tmp[-length(tmp)]) + 1)
# 7 13 19
# 不加1就是轉折前的點
(value = v[index])
# 7 1 7
PS: (a = 5) 等於是 a = 5;print(a)
PS2: 這從rle延伸出來的想法,多看看source code有助身心健康!?
use pipe operator to do this:
library(magrittr)
index = v %>% diff %>% is_less_than(0) %>% {
.[-1L] != .[-length(.)]
} %>% which %>% add(1)
value = v[index]
update:
index = which(diff(diff(v)) != 0 ) + 1
value = v[index]
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.73.190
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1444875424.A.8E3.html
推
10/15 10:31, , 1F
10/15 10:31, 1F
※ 編輯: celestialgod (140.109.73.190), 10/15/2015 14:22:50
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章