nearestdist {spam}R Documentation

Distance Matrix Computation

Description

This function computes and returns specific elements of distance matrix computed by using the specified distance measure.

Usage

nearest.dist( x, y=NULL, method = "euclidean",
             eps = .Spam$eps, delta = 1,
             diag = FALSE, upper = NULL,
             p=2, miles=TRUE, R=NULL)

Arguments

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.

Details

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.

Value

A spam object containing the distances spanned by eps and delta.

Author(s)

Reinhard Furrer

Examples

# 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))


[Package spam version 0.15-0 Index]