问题
Using R
Say for example you have a matrix such as the one below.
> C<-matrix(c(0,-7,2,8,0,0,3,7,0,3,0,3,0,0,0,0),nrow=4,byrow=TRUE)
> C
[,1] [,2] [,3] [,4]
[1,] 0 -7 2 8
[2,] 0 0 3 7
[3,] 0 3 0 3
[4,] 0 0 0 0
How do you find the column number of the smallest element in a certain row. For example I want to know what column number the smallest element in row 1 is. Therefore the output should just be 2. As the smallest element in row 1 is -7 and that is in column 2. I'm assuming the answer is very easy but i just can't seem to do it! I tried doing the following but it just gives me the answer of 5.
> inds = which(C == min(C[1,]))
> inds
[1] 5
Can someone also tell me what the 5 means in this particular case?
Thanks
回答1:
If there is only a single minimum for each row you can find it with
apply(C, 1, which.min)
or (from R: finding column with minimum value in each row when there is a tied). See ?max.col
for more options.
max.col(-C, "first")
edit (thanks to @flodel in the comments)
You can do this for individual rows by
which.min(C[1,])
Or if there are multiple matches
apply(C, 1, function(i) which(i == min(i)))
You get 5
, as -7
is the fifth element of the matrix as it goes column wise. Look at c(C)
来源:https://stackoverflow.com/questions/27404710/finding-the-column-number-of-the-smallest-element-in-a-certain-row