What I want to do is more or less a combination of the problems discussed in the two following threads:
- Perform non-pairwise all-to-all comparisons between two unordered character vectors --- The opposite of intersect --- all-to-all setdiff
- Merge data frames based on numeric rownames within a chosen threshold and keeping unmatched rows as well
I have two numeric vectors:
b_1 <- c(543.4591, 489.36325, 12.03, 896.158, 1002.5698, 301.569)
b_2 <- c(22.12, 53, 12.02, 543.4891, 5666.31, 100.1, 896.131, 489.37)
I want to compare all elements in b_1
against all elements in b_2
and vice versa.
If element_i
in b_1
is NOT equal to any number in the range element_j ± 0.045
in b_2
then element_i
must be reported.
Likewise, if element_j
in b_2
is NOT equal to any number in the range element_i ± 0.045
in b_1
then element_j
must be reported.
Therefore, example answer based on the vectors provided above will be:
### based on threshold = 0.045
in_b1_not_in_b2 <- c(1002.5698, 301.569)
in_b2_not_in_b1 <- c(22.12, 53, 5666.31, 100.1)
Is there an R function that would do this?