查找某行中最小元素的列号

时间:2014-12-10 15:26:10

标签: r algorithm matrix which

使用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

在这种特殊情况下,有人还可以告诉我这意味着什么?

由于

1 个答案:

答案 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)