I am looking for a condition which will return the index of a vector satisfying a condition.
For example- I have a vector b = c(0.1, 0.2, 0.7, 0.9)
I want to know the first index of b for which say b >0.65. In this case the answer should be 3
I tried which.min(subset(b, b > 0.65))
But this gives me 1 instead of 3.
Please help
Use the findIndex() method to get the index of an array element that matches a condition. The method takes a function and returns the index of the first element in the array, for which the condition is satisfied. If the condition is never met, the findIndex method returns -1 .
Use the match() Function to Find the Index of an Element in R. The match() function is very similar to the which() function. It returns a vector with the first index (if the element is at more than one position as in our case) of the element and is considered faster than the which() function.
In Python to find a position of an element in a list using the index() method and it will search an element in the given list and return its index.
Use which
and take the first element of the result:
which(b > 0.65)[1] #[1] 3
Be careful, which.max
is wrong if the condition is never met, it does not return NA
:
> a <- c(1, 2, 3, 2, 5) > a >= 6 [1] FALSE FALSE FALSE FALSE FALSE > which(a >= 6)[1] [1] NA # desirable > which.max(a >= 6) [1] 1 # not desirable
Why? When all elements are equal, which.max
returns 1:
> b <- c(2, 2, 2, 2, 2) > which.max(b) [1] 1
Note: FALSE < TRUE
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With