拒绝不随相同增加而增加的数字序列中的数字
reject numbers in a sequence of numbers that do not increase with same increase
我有一个数字序列,我想检查并拒绝不随相似水平增加的数字。
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).
这是获取要保留的索引的丑陋方法。如果您对不同的截止值感兴趣,请更改 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
我有一个数字序列,我想检查并拒绝不随相似水平增加的数字。
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).
这是获取要保留的索引的丑陋方法。如果您对不同的截止值感兴趣,请更改 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