find_peaks <- function (x, m = 5){
shape <- diff(sign(diff(x, na.pad = FALSE)))
pks <- sapply(which(shape < 0), FUN = function(i){
z <- i - m + 1
z <- ifelse(z > 0, z, 1)
w <- i + m + 1
w <- ifelse(w < length(x), w, length(x))
if(all(x[c(z : i, (i + 2) : w)] <= 0.5 * x[i + 1])) return(i + 1) else return(numeric(0))
})
pks <- unlist(pks)
pks
}
欢迎使用CSDN-markdown编辑器
最新推荐文章于 2019-03-26 05:59:35 发布