gpt4 book ai didi

r - 在两个无序字符向量之间执行非成对全对全比较 --- 相交的反面 --- 全对全 setdiff

转载 作者:行者123 更新时间:2023-12-02 04:29:47 25 4
gpt4 key购买 nike

示例数据

v1 <- c("E82391", "X2329323", "C239923", "E1211", "N23932", "F93249232", "X93201", "X9023111", "O92311", "9000F", "K9232932", "L9232932", "X02311111")
v2 <- c("L9232932", "C239923", "E1211", "E82391", "F93249232", "U82832")

问题

我只想提取那些在一个向量中而不是另一个向量中的项目。

我明白 setdiff无法比较两个无序字符向量并找出两者之间的所有差异。

例如, %in%在两个字符向量之间执行全面比较?

在这种情况下,它确实有效(尽管它不会报告那些在 v2 中而不是在 v1 中的元素)。
> v1[!v1 %in% v2]
[1] "X2329323" "N23932" "X93201" "X9023111" "O92311" "9000F" "K9232932" "X02311111"

另一种方法是使用名为 outersect 的用户定义函数。如 shown here这显示了所有差异。
outersect <- function(x, y) {
sort(c(x[!x%in%y],
y[!y%in%x]))
}

outersect(v1,v2)

问题

我真的很想知道是否有任何 R 函数可以轻松地在两个字符向量之间执行全面比较!这个想法是为了真正提高代码的可读性(特别是当有几十个向量需要相互比较时)。

执行这种全方位比较的最安全、最有效的方法是什么?更具体地说,R 中是否有一个函数可以

引用。
  • 布雷亚尔,托尼。 “outersect():与 R 的 intersect() 函数相反”,2011 年 11 月。R 博客。
  • 最佳答案

    这个怎么样...

    setdiff(union(v1,v2),intersect(v1,v2))

    [1] "X2329323" "N23932" "X93201" "X9023111" "O92311" "9000F"
    "K9232932" "X02311111" "U82832"

    关于r - 在两个无序字符向量之间执行非成对全对全比较 --- 相交的反面 --- 全对全 setdiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043291/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com