如何在向量中找到第一个位置,其中所有其余值都相同

How to locate first location in a vector where all the rest of values are the same

我有一个向量 X,如下所示:

X = c(30, 10, 10, 15, 25, 1, 10, 55, 10, 1, 10, 5, 5, 5, 5, 10, 5, 5, 5, 5, 5, 5, 5, 5) 
                                                                ^
                                                                17

我想创建一个函数,如果我输入上述向量和一个数字 n,它会显示连续 n 的起始位置。在上面的X中,如果从第17个位置开始我的n是5,则所需的数字是17,向量的其余部分都是5.

所以,如果我想要一个函数 f,使得 f(X,5) 给我 17。谁能帮助我以最快的方式实现它?

如果我们假设最后一个元素总是 5(根据 OP),我们可以反转向量,找到第一个非五个元素,从向量的长度中减去它并在中加 2为了再次切换方向

length(X) - which.max(rev(X) != 5) + 2
# [1] 17