拒绝数字序列中的数字,这些数字不会随着相同的增加而增加

时间:2017-10-05 19:26:29

标签: r increment number-sequence

我想要检查一系列数字并拒绝不会增加相似级别的数字。

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)。

1 个答案:

答案 0 :(得分:-1)

这是抓住你想要保留的索引的一种丑陋方式。如果您对不同的截止值感兴趣,请更改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