在两个不同的数据集上循环逻辑运算符,以在R

时间:2019-06-17 20:45:31

标签: r loops if-statement matrix

我有两个数据集Mtest和Ztest。我正在尝试将各个数据集中的每个值都比较为零,并使用比较的结果来创建一个具有结果的新数据集。比较应该得出三个结果之一。

Result 1: Mtest > 0 & Ztest > 0 <- "OW"
Result 2: Mtest < 0 & Ztest < 0 <- "UW"
Result 3: Mtest < 0 & Ztest > 0 | Mtest > 0 & Ztest < 0 <- "MW"

数据集1:Mtest:

  A           B             C
-0.0136       0.0078         -0.0234
-0.0377       0.1369         -0.0387

数据集2:Ztest

  A           B             C
-0.4283      0.4441         -0.6826
-1.888      -0.5877         -1.2024

所需的输出:

  A             B            C
 UW             OW           UW
 UW             MW           UW

我的逻辑不是为B列第2行生成MW。以下是我的循环正在生成的输出示例:

  A             B            C
 UW            OW            UW
 UW            OW            UW

当我运行以下循环时,它无法正常工作,并且我一直很难确定自己在做什么错。

testMatrix <- matrix(0, ncol = 3, nrow = 2)

    for(i in 1:ncol(Ztest)) {
  if(c(Ztest[,i], Mtest[,i]) > 0){
    testMatrix[,i] <- "OW"
  } else {
    if((Ztest[,i] > 0 & Mtest[,i] < 0) | (Ztest[,i] < 0 & Mtest[,i] > 0)){
      testMatrix[,i] <- "MW"
    } else {
      if(c(Ztest[,i],Mtest[,i]) < 0){
        testMatrix[,i] <- "UW"
      }
    }
  }
}

感谢您为我的失误提供的任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

您需要遍历行和列。现在,您总是将相同的值分配给整个列。试试:

SHOW CHARACTER SET FOR mydatabase.mytable;