Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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 双重比较与替代_R_Replace_Compare_Conditional Statements - Fatal编程技术网

R 双重比较与替代

R 双重比较与替代,r,replace,compare,conditional-statements,R,Replace,Compare,Conditional Statements,我有个问题。如果两列满足两个条件,我需要替换它们: 我想从数据中比较的两列必须相等(在同一行中成对) 两列必须等于7、8或9 如果满足条件,R应替换NA的两列 例如: 假设我想比较数据中的第二列和第三列: data[,2] = 7,2,4,5,9,2,1,8,2,4 data[,3] = 3,2,5,6,9,3,1,8,2,4 因此,我希望收到: data[,2] = 7,2,4,5,NA,2,1,NA,2,4 data[,3] = 3,2,5,6,NA,3,1,NA,2,4 当两列相等且等

我有个问题。如果两列满足两个条件,我需要替换它们:

  • 我想从数据中比较的两列必须相等(在同一行中成对)
  • 两列必须等于7、8或9
  • 如果满足条件,R应替换NA的两列

    例如: 假设我想比较数据中的第二列和第三列:

    data[,2] = 7,2,4,5,9,2,1,8,2,4
    data[,3] = 3,2,5,6,9,3,1,8,2,4
    
    因此,我希望收到:

    data[,2] = 7,2,4,5,NA,2,1,NA,2,4
    data[,3] = 3,2,5,6,NA,3,1,NA,2,4
    

    当两列相等且等于
    {7或8或9}时,R应比较NA的两列。

    我们可以基于这两列创建逻辑索引

    i1 <- data[,2]==data[,3] & data[,2] %in% 7:9 & data[,3] %in% 7:9
    data[i1, 2:3] <- NA
    
    数据
    数据谢谢,但如果一列中的7和第二列中的8在同一行中,则无法替换。如果我想比较其他值(不是7:9,例如1,4,8),我应该创建一个向量吗?c(1,4,8)?谢谢。@BartekCzech在第一种方法中,由
    data[,2]==data[,3]
    处理。第二,是
    Reduce(&“
    )检查它们是否都是真的。如果你想比较c(1,4,8),用它代替7:9,即
    Reduce(&)”,lapply(数据[2:3],%In%,c(1,4,8))
    你尝试了什么?为什么不起作用?代码编写服务也不起作用。
    data[Reduce(`&`, lapply(data[2:3], `%in%`, 7:9)), 2:3] <- NA
    
    data <- structure(list(col1 = 1:10, col2 = c(7, 2, 4, 5, 9, 2, 1, 8, 
    2, 4), col3 = c(3, 2, 5, 6, 9, 3, 1, 8, 2, 4)), .Names = c("col1", 
     "col2", "col3"), row.names = c(NA, -10L), class = "data.frame")