我正在尝试使用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,没有 缺少值,没有负面因素。我错过了什么?
我很感激任何建议。在此先感谢您的帮助!
答案 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或其他功能。