比较R中的两个值

时间:2014-12-17 14:18:24

标签: r matrix compare equals-operator

我正在检查矩阵的输入在R中是否是倒数,即一边的值= = 1 /值..

到目前为止,我有......

    AHP <- function(pairwisematrix){

    ## check the input data

    if (!((is.matrix(pairwisematrix) || (is.data.frame(pairwisematrix))))) 
            stop("pairwise matrix must be a matrix or a data frame")

    if (!(nrow(pairwisematrix) == ncol(pairwisematrix))) 
      stop("pairwise matrix must be a square matrix or a data frame")

    for (i in 1:nrow(pairwisematrix))   {
    for (j in 1:ncol(pairwisematrix))       {
        if (i == j) {   if (pairwisematrix[i,j] != 1)                                                                       {   stop("the central values in the reciprocal matrix must be 1.")                              }}
        else { if ((pairwisematrix[i,j] == 1 / pairwisematrix[j,i]) || (pairwisematrix[j,i] == 1 / pairwisematrix[i,j]))))  {   stop("the pairwise matrix must be reciprocal (i.e. value on one side must = 1/value)")     }}
                                            }
                                        }


  out <- "all worked"

    return(out)
}

但是当我测试时:

check1 <- matrix(c(1,1/3,5,3,1,0.2,0.2,5,1),3,3,byrow=T)
test <- AHP(check1)

我收到错误:

  

成对矩阵必须是倒数的(即一边的值必须=   1 /值)0.333333&amp; 0.333333

我尝试将值转换为字符串,部分字符串并尝试相同(a,b,)但没有成功。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:2)

如果if s内有for loopAHP <- function(pairwisematrix){ if(!all(pairwisematrix == t(1/pairwisematrix))) stop("the pairwise matrix must be reciprocal (i.e. value on one side must = 1/value)") else return("all worked") } AHP(check1) #[1] "all worked" ,那么如果按预期工作,我会感到惊讶。 R设计用于处理矩阵,因此您可以编写类似

的内容
{{1}}