jay2020
jay2020

Reputation: 461

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

I have a vector, X, looking like the following:

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

I want to make a function where if I input the above vector and a number, n, it shows where the consecutive n starts. In X above, the desired number is 17 if my n is 5 since starting the 17th location, the rest of the vector is all 5.

So, if I want a function, f, such that f(X,5) gives me 17. Can anyone help me on achieve this in the fastest manner?

Upvotes: 0

Views: 95

Answers (1)

David Arenburg
David Arenburg

Reputation: 92292

If we assume that the last element is always 5 (according to OP), we could just reverse the vector, find the first non five, subtract it from the length of the vector and add 2 in order to switch direction back again

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

Upvotes: 2

Related Questions