1

我知道有一种 R 方法可以让程序员将邻居列表转换为矩阵。我正在尝试做相反的过程;无论如何,我可以将包含点的 x 和 y 坐标的矩阵转换为邻居列表吗?

谢谢你

PS:我尝试了以下方法:

require(spdep)
mat2listw(myMatrix)$neighbours

但这会导致问题,因为 myMatrix 必须是方阵……在我的情况下,我的矩阵是 11*2,它不是方阵。

4

1 回答 1

0

您可以尝试以下方法。

# need indices.  Use Names or numeric index
rr <- if(is.null(rownames(myMatrix))) seq(nrow(myMatrix)) else rownames(myMatrix)
cc <- if(is.null(colnames(myMatrix))) seq(ncol(myMatrix)) else colnames(myMatrix)

inds <- as.matrix( expand.grid(X=rr, Y=cc) )


## as a data.frame
data.frame(inds, Dist=myMatrix[inds])

## as a list
ret <- apply(inds, 1, function(i) list(c(i, Dist=myMatrix[rbind(i)])))
# possibly unlist if needed
unlist(ret, recursive=FALSE)

样本数据

set.seed(1)
myMatrix <- matrix(sample(8, 22, TRUE), ncol=2, dimnames=list(LETTERS[1:11], letters[1:2]))
myMatrix
于 2013-09-19T01:28:42.167 回答