R 查找最大值,但如果比较的值相等,则生成NA
我有一个预测结果矩阵,我想在矩阵的每一行中找到绝对最大概率:R 查找最大值,但如果比较的值相等,则生成NA,r,max,R,Max,我有一个预测结果矩阵,我想在矩阵的每一行中找到绝对最大概率: > head(TestResult) c290 c320 c390 c460 c520 c580 c710 c780 c800 c100001 [1,] 0.00000000 0.00000000 0.06666667 0.25000000 0.14285714 0.00000000 0.3333333
> head(TestResult)
c290 c320 c390 c460 c520 c580 c710 c780 c800 c100001
[1,] 0.00000000 0.00000000 0.06666667 0.25000000 0.14285714 0.00000000 0.3333333 0.26666667 0.06666667 0.04545455
[2,] 0.01808511 0.05480869 0.01342282 0.01968504 0.03144654 0.02349336 0.5382199 0.07889344 0.11472081 0.05813953
[3,] 0.00000000 0.00000000 0.00000000 0.33333333 0.25000000 0.00000000 0.2000000 0.33333333 0.50000000 0.28571429
[4,] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.0000000 0.00000000 0.00000000 0.00000000
[5,] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.0000000 0.00000000 0.00000000 0.00000000
[6,] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.0000000 0.00000000 0.00000000 0.00000000
>
如您所见,在最后三行中没有概率值。到目前为止,我的代码是:
BNpred <- colnames(TestResult)[max.col(TestResult,ties.method = "first")]
BNpred <- substring(BNpred,2)
我应该如何更改代码,以便在所有行都等于零时将NA指定为max?您可以添加此行:
BNpred[rowSums(abs(TestResult)) == 0] <- NA
BNpred[rowSums(abs(TestResult))==0]感谢@Moody_mudscappper的回答。昨晚我想出了另一个解决方案,所以我在这里为其他人写:
for (i in 1:1430){
if(max(TestResult[i,])==0){
BNpred[i] = "NA" }}
不应该是NA吗?
BNpred[!apply(TestResult,1,any)] <- NA
for (i in 1:1430){
if(max(TestResult[i,])==0){
BNpred[i] = "NA" }}