If I have a single vector, I can get the 1st occurrence which is below a value:
test <- c(0.5,0.8,0.1,0.08,0.06,0.04)
which(test<0.1)[1]
which correctly gives the answer as 4. However, how do I get the first occurrence within each column of a matrix, such as the furst occurrence below 5 in the following 2 column matrix:
test2 <- matrix(c(5,8,3,4,7,5,6,2),ncol=2)
Using apply with which returns a list:
> apply(test2<5,2,which)
[[1]]
[1] 3 4
[[2]]
[1] 4
while using apply with which.min returns 1 for all columns:
> apply(test2<5,2,which.min)
[1] 1 1
whereas, what I want should just return [1] 3 4 – am I missing something obvious?
Here’s another answer. Assuming you mean test2 where you write test3, note that ‘test2<5’ is a logical vector. The minimum value will be FALSE. The maximum value (TRUE) is what you want:
Note that this is not correct if the maximum value is not TRUE.