Search code examples
rxorintersectset-differencesymmetric-difference

Function to find symmetric difference (opposite of intersection) in R?


The Problem

I have two string vectors of different lengths. Each vector has a different set of strings. I want to find the strings that are in one vector but not in both; that is, the symmetric difference.

Analysis

I looked at the function setdiff, but its output depends on the order in which the vectors are considered. I found the custom function outersect, but this function requires the two vectors to be of the same length.

Any suggestions?

Correction

This issue seems to be specific to the data with which I am working. Otherwise, the answer below addresses the problem I mention in this post. I will look to see what is unique about my data and post back if I learn anything that might be helpful to other users.


Solution

  • Why not:

    sym_diff <- function(a,b) setdiff(union(a,b), intersect(a,b))