【问题标题】:Why R claims: "Error in if (S[i, j] == S[j, i]) { : missing value where TRUE/FALSE needed ? Symmetric Matrix为什么 R 声称:“if (S[i, j] == S[j, i]) { 中的错误:需要 TRUE/FALSE 的缺失值?对称矩阵
【发布时间】:2015-02-24 09:28:26
【问题描述】:

这是我的代码:

Sip<-function(S,u,v){
   S<-matrix(,u,v);u<-nrow(S);v<-ncol(S);u==v;
   for(i in 1:u)
     {for(j in 1:v){
       if(S[i,j]==S[j,i]){print("Simétrica")}
       else{print("No simétrica")}
     }
   }
   S
 }
 Sip(S,2,2)

我的错误在这里:if (S[i, j] == S[j, i]) {:

错误:

需要 TRUE/FALSE 的地方缺少值

【问题讨论】:

    标签: r matrix symmetric


    【解决方案1】:

    你似乎有点困惑。您正在将矩阵 S (您尚未在此处发布的代码中定义)传递给您的函数。这不会导致错误,因为在您的函数内部,您通过v 矩阵填充了NA(尝试matrix(,2,2) 来查看)定义了u,它覆盖了@ 的值987654326@ 传入并触发错误。

    试试这个:

    Sip <- function(S,u,v){
       for(i in 1:u)
         {for(j in 1:v){
           if(S[i,j]==S[j,i]){print("Simétrica")}
           else{print("No simétrica")}
         }
       }
       S
     }
     S <- matrix(1:4,2,2)
     Sip(S,2,2)
    ## [1] "Simétrica"
    ## [1] "No simétrica"
    ## [1] "No simétrica"
    ## [1] "Simétrica"
    ##      [,1] [,2]
    ## [1,]    1    3
    ## [2,]    2    4
    

    这可能仍然不是你想要的,但它更进一步......

    也可能有用:

    apropos("symmetric")
    isSymmetric(S)
    

    【讨论】:

      猜你喜欢
      • 2021-01-06
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多