比较R中的两列时使用OR逻辑运算符

时间:2018-10-24 15:43:00

标签: r syntax logic logical-operators

我有一个很大的数据框,在其中打印与另一列不匹配的列。我能够将第4列和第9列与以下代码段进行比较:

        memory = MemoryMappedFile.CreateOrOpen("hookFreePIE", 68, MemoryMappedFileAccess.ReadWrite);
        accessor = memory.CreateViewAccessor();
        ewh = EventWaitHandle.OpenExisting("ewhFreePIE");
        :
        :
     // sample of loop   
     public void StartLoop()
    {           
        while (running)
        {
            ewh.WaitOne();// wait Set() of another or same process
            if (cmdtostop) //you could create cmdstop inside memorymapped file (set first byte to 1 for example
            {
                running = false;
            }
            else
            {
                //do something with data , using accessor.Read
        }
    }

但是,我想打印第4列和第9列不匹配或者第6列和第11列不匹配的数据框。因此,如果其中一个参数为true,它将打印。

我尝试使用:

test_no_match <- newtest[which(newtest[,4] != newtest[,9] ),]

但是我不断收到

之类的错误
  

“ x ||”中无效的“ x”类型y'

是否可以同时比较多个参数?谢谢。

1 个答案:

答案 0 :(得分:0)

...怎么了...

 testnomatch<- (newtest[which(newtest[,4] != newtest[,9] ),] || newtest[which(newtest[,6] != newtest[,11] ),]) 

几件事。

首先,||期望使用长度为1的条件,并打算在诸如if(a || b) ....之类的条件语句中使用。

第二,|旨在加入两个相同长度的条件。在这里,您有所不同。

因此,将各个部分放在一起:

 condition1 <- newtest[,4] != newtest[,9]
 condition2 <- newtest[,6] != newtest[,11]
 jointcondition <- condition1 | condition2
 testnomatch <- newtest[which(jointcondition),]

或一行:

 newtest[which((newtest[,4] != newtest[,9]) | (newtest[,6] != newtest[,11])),]

这应该可以,但是当然,由于您没有提供可重复的示例,因此我没有机会尝试:)