nearestdist {spam} | R Documentation |
This function computes and returns specific elements of distance matrix computed by using the specified distance measure.
nearest.dist( x, y=NULL, method = "euclidean", eps = .Spam$eps, delta = 1, diag = FALSE, upper = NULL, p=2, miles=TRUE, R=NULL)
x |
Matrix of first set of locations where each row gives the coordinates of a particular point. See also Details. |
y |
Matrix of second set of locations where each row gives the
coordinates of a particular point. If this is missing x is
used. See also Details. |
method |
the distance measure to be used. This must be one of
"euclidean" , "maximum" , "minkowski" or
"greatcircle" . Any unambiguous substring can be
given. |
eps |
distances smaller than this number are considered zero. |
delta |
only distances smaller than delta are recorded. |
diag |
Should the diagonal be included? Only of importance if y is missing. |
upper |
Should the entire matrix (NULL ) or only the upper-triagonal (TRUE )
or lower-triagonal (FALSE ) values be calculated. |
p |
The power of the Minkowski distance. |
miles |
If true distances are in statute miles if false distances in kilometers. |
R |
Radius to use for sphere to find spherical distances. If NULL
the radius is either in miles or kilometers depending on the
values of the miles argument. If R=1 then distances are of
course in radians. |
For the great circle distance, x
and y
contain
the longitudes in the first and the latitudes in the second column.
x
and y
can be any object with an existing
as.matrix
method.
A quick scan revieled distance functions in at least 7 packages. The
argument names should be as general as possible and be coherend with
many (but not all) available distance functions.
The Fortran code is based on a idea of Doug Nychka.
A spam
object containing the distances spanned by eps
and delta
.
Reinhard Furrer
# Note that upper=T and using t(X)+X is quicker than upper=NULL; # upper=T marginally slower than upper=F. # To compare nearest.dist with dist, use diag=FALSE, upper=TRUE nx <- 4 x <- expand.grid(as.double(1:nx),as.double(1:nx)) sum( (nearest.dist( x, delta=nx*2, diag=FALSE, upper=TRUE)@entries- c(dist(x)))^2) # Create nearest neighbor structures: par(mfcol=c(1,2)) x <- expand.grid(1:nx,1:(2*nx)) display( nearest.dist( x, delta=1)) x <- expand.grid(1:(2*nx),1:nx) display( nearest.dist( x, delta=1))