首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将普通列表转换为R中的nb/spdep对象?

将普通列表转换为R中的nb/spdep对象?
EN

Stack Overflow用户
提问于 2021-08-05 20:07:14
回答 1查看 148关注 0票数 1

我需要从一个空间多边形创建一个邻居列表。目前我正在使用函数poly2nb,但不幸的是它不是很精确,而且一些没有共同点的多边形被认为是相邻的。我尝试过改变snap的论点,但没有运气。不过,我尝试了来自rgeos包的函数rgeos,它的工作性能要好得多。唯一的问题是,它创建了一个不能在list中使用的spdep对象。有任何方法将其转换为nb对象吗?

(预先多谢!)

EN

回答 1

Stack Overflow用户

发布于 2022-11-17 03:30:40

查看tri2nb函数https://rdrr.io/cran/spdep/src/R/tri2nb.R的源代码,我知道它是一个与您提到的不同的函数,您可以将list更改为nb类型:

class(yourlist) <- "nb"

举个例子:

代码语言:javascript
复制
mylist <- list(A = c(1,2,5,6), B = c(2,4,6,5))
class(mylist) #check the class of mylist

初步结果:

代码语言:javascript
复制
> class(mylist)
[1] "list"

将mylist类分配为nb。

代码语言:javascript
复制
class(mylist) <- "nb"
class(mylist) #check the class of mylist

最终结果:

代码语言:javascript
复制
> class(mylist)
[1] "nb"

由此,您可以继续使用spdep中的函数来选择最优的空间加权矩阵。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68672915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档