我有一个矩阵:
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
我想写一个函数将每一行转换为0和1.每行的最高值为1,其他两个值为0.例如,第40行将返回(1 0 0) 。我该怎么做?
答案 0 :(得分:1)
我们可以将每行的max
与来自rowMaxs
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
选项是通过行/列索引(max.col
)获得每行的最大值,然后比较
+(m1==m1[cbind(1:nrow(m1), max.col(m1))])