示例数据
v1 <- c("E82391", "X2329323", "C239923", "E1211", "N23932", "F93249232", "X93201", "X9023111", "O92311", "9000F", "K9232932", "L9232932", "X02311111")
v2 <- c("L9232932", "C239923", "E1211", "E82391", "F93249232", "U82832")
PROBLEM
我只想提取其中一个向量中的项目,而不是另一个向量中的项目。
我明白那个setdiff
无法比较两个无序字符向量并找到两者之间的所有差异..
例如,是否%in%
在两个字符向量之间执行全面比较?
在这种情况下,它确实有效(尽管它不报告那些位于v2
并且不在v1
).
> v1[!v1 %in% v2]
[1] "X2329323" "N23932" "X93201" "X9023111" "O92311" "9000F" "K9232932" "X02311111"
另一种方法是使用名为的用户定义函数outersect
as 此处显示这显示了所有的差异。
outersect <- function(x, y) {
sort(c(x[!x%in%y],
y[!y%in%x]))
}
outersect(v1,v2)
QUESTION
我真的很想知道是否有任何 R 函数可以轻松地在两个字符向量之间执行全面比较!这个想法是为了真正提高代码的可读性(特别是当有数十个向量需要相互比较时)。
执行这种全面比较的最安全、最有效的方法是什么?更具体地说,R 中是否有一个函数可以
参考。
- 布雷亚尔、托尼. ”externalsect():与 R 的 intersect() 函数相反”,2011 年 11 月。R 博主。