使用R
例如,假设您有一个矩阵,如下面的矩阵。
> 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
如何找到某一行中最小元素的列号。例如,我想知道第1行中最小元素的列号是什么。因此输出应该只是2.因为第1行中的最小元素是-7而且是第2列。我假设答案非常简单,但我似乎无法做到这一点!我尝试了以下操作,但它只给了我5的答案。
> inds = which(C == min(C[1,]))
> inds
[1] 5
在这种特殊情况下,有人还可以告诉我这意味着什么?
由于
答案 0 :(得分:5)
如果每行只有一个最小值,您可以使用
找到它apply(C, 1, which.min)
或(来自R: finding column with minimum value in each row when there is a tied)。有关更多选项,请参阅?max.col
。
max.col(-C, "first")
编辑(感谢评论中的@flodel)
您可以通过
为各行执行此操作which.min(C[1,])
或者如果有多个匹配
apply(C, 1, function(i) which(i == min(i)))
得到5
,因为-7
是矩阵的第五个元素,因为它是逐列的。看看c(C)