Getting index of first occurrence of a value in every column of a matrix
r
Solution
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:
> apply(test2<5,2,which.max)
[1] 3 4
Note that this is not correct if the maximum value is not TRUE.
Problem
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?