Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 查找最大值,但如果比较的值相等,则生成NA_R_Max - Fatal编程技术网

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" }}