使用R中的mat2listw函数创建空间权重矩阵

时间:2013-11-29 20:11:32

标签: r spatial spdep

我正在尝试使用mat2listw函数在R中创建权重对象。我有一个非常大的空间权重矩阵(大约22,000x22,000) 这是在Excel中创建并读入R,我现在正在尝试实现:

library(spdep) 
SW=mat2listw(matrix) 

我收到以下错误:

Error in if (any(x<0)) stop ("values in x cannot be negative"): missing 
value where TRUE/FALSE needed. 

这里出了什么问题?我当前的矩阵都是0和1,没有 缺少值,没有负面因素。我错过了什么?

我很感激任何建议。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

以下是您之前评论的简单测试:

library(spdep)
m1 <-matrix(rbinom(100, 1, 0.5), ncol =10, nrow = 10) #create a random 10 * 10 matrix
m2 <- m1 # create a duplicate of the first matrix
m2[5,4] <- NA # assign an NA value in the second matrix
SW <- mat2listw(m1) # create weight list matrix
SW2 <- mat2listw(m2) # create weight list matrix

第一个矩阵不会失败,但第二个矩阵会失败。真正的问题是为什么你的权重矩阵是创建包含NA的。您是否考虑过在r中创建空间权重矩阵?使用dnearneigh或其他功能。