2017-02-04 6 views
0

の数字の残りの部分を作る私が行列を有する:戻り最高値と行0

head(Y_hat) 
     [,1]  [,2]  [,3] 
40 0.8316621 0.7593911 0.7446870 
56 0.8429158 0.6935900 0.7660440 
85 0.8405038 0.6874243 0.7406380 
134 0.7269549 0.7584314 0.7089962 
30 0.7358268 0.6745820 0.6879305 
131 0.7475585 0.7617574 0.7782455 

をI 0と1に各行を変換する関数を記述したいと思い各行の最高値は1になり、他の2つの値は0になります。たとえば、行40は(1 0 0)を返します。どうすればいい?

+2

'マット==適用(マットは、1、MAX)' ' – user20650

+0

さt(適用(Y_hat、1、関数(x)はas.numeric(x == MAX(X))))' –

+0

これは機能しました。ありがとう! –

答えて

1

我々は、行/列の索引付け(max.col)を介して行ごとに最大値にmatrixStats

library(matrixStats) 
+(m1==rowMaxs(m1)) 
# [,1] [,2] [,3] 
#40  1 0 0 
#56  1 0 0 
#85  1 0 0 
#134 0 1 0 
#30  1 0 0 
#131 0 0 1 

またはbase RオプションからrowMaxsと各行のmaxを取ることによってれる比較した後と比較することができ

+(m1==m1[cbind(1:nrow(m1), max.col(m1))])