1

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

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,没有缺失值和负元素。我错过了什么?

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

4

1 回答 1

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 或其他功能。

于 2013-11-30T00:04:16.053 回答