https://github.com/cran/cccd
Tip revision: 2f6298abf9bbecdb552fed6b167da6ca4febdc04 authored by David J. Marchette on 09 May 2012, 00:00:00 UTC
version 1.02
version 1.02
Tip revision: 2f6298a
nng.R
nng <- function(x=NULL,dx=NULL,k=1,mutual=FALSE,method=NULL)
{
if(is.null(dx)) {
if(is.null(x)) stop("one of x or dx must be given")
dx <- as.matrix(dist(x,method=method))
}
n <- nrow(dx)
A <- matrix(0,nrow=n,ncol=n)
for(i in 1:n){
d <- sort(dx[i,])
A[i,dx[i,]<=d[k+1]] <- 1
}
diag(A) <- 0
if(mutual){
for(i in 1:n){
A[i,] <- A[i,] & A[,i]
A[,i] <- A[i,]
}
}
if(mutual)
out <- graph.adjacency(A,mode="undirected")
else
out <- graph.adjacency(A,mode="directed")
out$k <- k
out$mutual <- mutual
out$layout <- x
out
}