找到容差最小的值

时间:2016-07-29 00:04:25

标签: r

如何在不更改顺序的情况下找到具有一定容差的此向量中的最后一个最小值?

示例:

c(0, 785, 10273, 6231, 5417, 2328, 5249, 1725, 2656, 6258, 2687, 
2651, 1063, 325, 2556, 738, 631, 140, 57, 1173, 407, 225, 135, 
69, 81, 21, 16, 3, 0, 26, 1, 2, 0, 1, 2, 1, 1, 0, 0, 3, 1, 0, 
0, 0, 1, 0, 0, 0, 0, 1, 0)

假设公差为26.从最后一个元素(0)向后工作我想返回数字的位置,其公差大于前一个数字的26。在这个例子中,它将是位置30或数字26。

2 个答案:

答案 0 :(得分:5)

您可以将Positionright=TRUE参数一起使用,以避免向前搜索然后获取最后结果:

Position(identity, diff(x) >= 26, right=TRUE) + 1
#[1] 30

答案 1 :(得分:2)

如果我理解你的问题,你可以这样做:

tail(which(diff(x)>=26),1L)+1L;
## [1] 30

数据

x <- c(0,785,10273,6231,5417,2328,5249,1725,2656,6258,2687,2651,1063,325,2556,738,631,140,57,
1173,407,225,135,69,81,21,16,3,0,26,1,2,0,1,2,1,1,0,0,3,1,0,0,0,1,0,0,0,0,1,0);