【问题标题】:Difference between two vectors in RR中两个向量之间的差异
【发布时间】:2015-10-12 21:59:12
【问题描述】:

我有两个向量:

a <- c(1, 1, 3, 4, 5, 7, 9)
b <- c(2, 3, 4, 6, 8, 2)

我想找到第二个向量中的数字,而不是第一个向量:

dif <- c(2, 6, 8)

我尝试了许多不同的方法(例如合并、不同类型的连接(dplyr 包)、setdiff、比较(比较包)),但我仍然找不到方法。

【问题讨论】:

    标签: r vector diff


    【解决方案1】:

    您可以使用setdiff

    setdiff(b,a)
    #[1] 2 6 8
    

    【讨论】:

    • setdiff(1:3,2:4) 结果:> 1
    • 对我来说期望是 1 和 4
    • @stakowerflol setdiff 给出了第一个与第二个的差异。如果你想要两者,那么你可能需要一个 union 和 setdiff
    【解决方案2】:

    替代setdiff(这可能更可取)的替代方法是使用%in%

    unique(b[! b %in% a])
    #[1] 2 6 8
    

    【讨论】:

    • 嗨@nico,unique(b[! b %in% a] 非常适合这个例子。但是,拜托,你看到我在更改向量a = c(4,2,3)b = c(2,3) 时得到numeric(0) 答案的任何原因吗?对我来说没有意义。独特的(b[!b %in% a])
    • @maycca 你的输出是正确的。它显示了 b 中的元素而不是 a 中的元素,a 是一个空集。
    【解决方案3】:

    已经回答了确切的问题,但是如果有人想找到两个列表之间未共享的所有元素,那么这就是答案:

    union(setdiff(a,b), setdiff(b,a))
    

    这里的“a”和“b”可能是这样的

    a<-c(1,2,3,4,5)
    b<-c(4,5,6,7,8)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 2012-01-31
      相关资源
      最近更新 更多