[R] Calculating Minimum Absolute Difference of Two Numeric Vectors

PIKAL Petr petr@p|k@| @end|ng |rom prechez@@cz
Tue Aug 18 11:00:07 CEST 2020


Hi

maybe

min(abs(outer(x,y, "-")))

If you want indices 

mm <- min(abs(outer(x,y, "-")))
which(abs(outer(x,y, "-"))== mm, arr.ind=TRUE)

And in original vectors

x[which(abs(outer(x,y, "-"))== mm, arr.ind=TRUE)[1]]
y[which(abs(outer(x,y, "-"))== mm, arr.ind=TRUE)[2]]

Cheers
Petr

> -----Original Message-----
> From: R-help <r-help-bounces using r-project.org> On Behalf Of Dario Strbenac
> Sent: Tuesday, August 18, 2020 9:00 AM
> To: r-help using r-project.org
> Subject: [R] Calculating Minimum Absolute Difference of Two Numeric
Vectors
> 
> Good day,
> 
> What is a fast and efficient way to calculate the minimum absolute
difference
> between two vectors of numbers? The two vectors have unequal length. I
> would also like to know the index of the first vector and the second
vector
> which results in the minimum absolute difference. For example:
> 
> x <- rpois(500, 100)
> y <- rpois(300, 30)
> 
> Is there a much faster way than a nested for loop without resorting to
Rcpp?
> 
> --------------------------------------
> Dario Strbenac
> University of Sydney
> Camperdown NSW 2050
> Australia
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> and provide commented, minimal, self-contained, reproducible code.


More information about the R-help mailing list