相关疑难解决方法(0)

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

示例数据

\n\n
v1 <- c("E82391", "X2329323", "C239923", "E1211", "N23932", "F93249232", "X93201", "X9023111", "O92311", "9000F", "K9232932", "L9232932", "X02311111")\nv2 <- c("L9232932", "C239923", "E1211", "E82391", "F93249232", "U82832")\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题

\n\n

我只想提取其中一个向量中的项目,而不是另一个向量中的项目。

\n\n

据我所知,setdiff无法比较两个无序字符向量并找到两者之间的所有差异。

\n\n

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

\n\n

在这种情况下,它确实有效(尽管它不报告那些位于v2和不位于 中的元素v1)。

\n\n
> v1[!v1 %in% v2]\n[1] "X2329323"  "N23932"    "X93201"    "X9023111"  "O92311"    "9000F"     "K9232932"  "X02311111"\n
Run Code Online (Sandbox Code Playgroud)\n\n

另一种方法是使用用户定义的函数,其名称outersect如下所示,它显示了所有差异。

\n\n
outersect <- function(x, y) {\n  sort(c(x[!x%in%y],\n         y[!y%in%x]))\n}\n\noutersect(v1,v2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题

\n\n

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

\n\n

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

\n\n …

r vector set-difference intersect

5
推荐指数
1
解决办法
170
查看次数

标签 统计

intersect ×1

r ×1

set-difference ×1

vector ×1