拒绝数字序列中的数字不会增加相同的增加

问题描述:

我有一个数字序列,我想要检查并拒绝不会以相似级别增加的数字。拒绝数字序列中的数字不会增加相同的增加

data <- c(1, 2, 5, 6, 6.25, 6.49, 6.75, 7.01, 8, 9, 11) 

例如,对于这里的数据我想,同比增长0.25 +/- 0.1到子集数,并拒绝那些不遵循这个规则的数字。在这种情况下,子边界序列将是(6,6.25,6.49,6.75,7.01)。

+2

欢迎SO。本网站不是代码编写服务,不适用于提供完整的解决方案。预计用户将展示一些努力和代码,而SO在此期间将帮助您解决具体的编程问题。你有没有尝试过任何东西?请阅读:https://*.com/help/asking –

这是一个难看的方法来抓住你想要保留的索引。更改0.35如果你有兴趣在不同的临界值

myfun <- function(D) { 
      index <- unique(c(which(abs(diff(D)) < 0.35), which(abs(diff(D)) < 0.35)+1)) 
      return(sort(index)) 
     } 

调用函数来获得你想要的答案与

data[myfun(data)] 
# [1] 6.00 6.25 6.49 6.75 7.01 

另一个测试

test <- c(1, 1.25, 2, 2.25, 3, 4.5, 4.75, 5, 5.45, 5.65) 
test[myfun(test)] 
# [1] 1.00 1.25 2.00 2.25 4.50 4.75 5.00 5.45 
+0

您可以通过将'which(dplyr :: lag(abs(diff(D)) Gregor

+0

我确实提到它很丑 – CPak