矩阵中的最大行数

Ku-*_*ala 3 r

我有一个矩阵,在R中包含三列.矩阵看起来像这样:

A=matrix(c(1,2,3,4,0.5,1,7,1.2,3,4,2,1),nrow=4, ncol=3)
Run Code Online (Sandbox Code Playgroud)

我想创建一个基于A的矩阵,在A的每一行中,该行返回1表示该行中的最高值,否则返回0.所以在上面的具体情况中,我需要一个如下所示的矩阵:

B=matrix(c(0,0,0,1,0,0,1,0,1,1,0,0),nrow=4,ncol=3)
Run Code Online (Sandbox Code Playgroud)

我试图搜索论坛,但找不到合适的答案.

谢谢.

A5C*_*2T1 5

也许是这样的?

t(apply(A, 1, function(x) as.numeric(x == max(x))))
#      [,1] [,2] [,3]
# [1,]    0    0    1
# [2,]    0    0    1
# [3,]    0    1    0
# [4,]    1    0    0
Run Code Online (Sandbox Code Playgroud)

请注意,在多个值与行中的最大值匹配的情况下,每行可能有多个"1".


JPC*_*JPC 5

以下几乎与Ananda的答案相同,但如果您的A足够大,那么微小的变化可能会对速度产生影响

> A<-matrix(rnorm(1000*1000),nrow=1000)
> system.time(t(apply(A, 1, function(x) as.numeric(x == max(x)))))
   user  system elapsed
  0.117   0.024   0.141
> system.time(1*(A==apply(A,1,max)))
   user  system elapsed
  0.056   0.008   0.065
Run Code Online (Sandbox Code Playgroud)