如何在不更改顺序的情况下找到具有一定容差的此向量中的最后一个最小值?
示例:
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。
答案 0 :(得分:5)
您可以将Position
与right=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);