[R] nearest stations in distance matrix

Rolf Turner rolf.turner at xtra.co.nz
Tue Apr 16 00:36:14 CEST 2013


Presumably --- based on the question she actually *asked* --- she does
NOT have the coordinates of the stations; only the distance matrix.

I believe that the following will do the job:  Let M be the distance matrix.

     diag(M) <- Inf
     nn5 <- apply(M,1,function(x){((1:length(x))[order(x)])[1:5]})

Check:

     require(spatstat)
     set.seed(42)
     X <- runifpoint(44)
     M <- crossdist(X,X)
     diag(M) <- Inf
     nn5 <- apply(M,1,function(x){((1:length(x))[order(x)])[1:5]})

     plot(X)
     plot(X[1],add=TRUE,chars=20,cols="red")
     plot(X[nn5[,1]],add=TRUE,chars=20,cols="blue")
     # Looks right to me.

         cheers,

             Rolf Turner

On 15/04/13 22:42, ONKELINX, Thierry wrote:
> Dear Eliza,
>
> If you have the coordinates of the stations you can use the nnwhich() function from the spatstat package.
>
> Best regards,
>
> ir. Thierry Onkelinx
> Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest
> team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance
> Kliniekstraat 25
> 1070 Anderlecht
> Belgium
> + 32 2 525 02 51
> + 32 54 43 61 85
> Thierry.Onkelinx at inbo.be
> www.inbo.be
>
> To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of.
> ~ Sir Ronald Aylmer Fisher
>
> The plural of anecdote is not data.
> ~ Roger Brinner
>
> The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data.
> ~ John Tukey
>
> -----Oorspronkelijk bericht-----
> Van: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] Namens eliza botto
> Verzonden: maandag 15 april 2013 12:36
> Aan: r-help at r-project.org
> Onderwerp: [R] nearest stations in distance matrix
>
> Dear R-user,
> Is there a way in R to locate the nearest 5 indices to a station, based on distances in a distance matrix. In other words i want to have nearest stations based on the distances in the matrix. The distance matrix, i have, has dimension 44*44.
> Thankyou very much in advance
> Elisa



More information about the R-help mailing list