使用spatstat按年份计算点模式最近邻距离报错的正确方法是什么
问题原因
你传入nndist的by参数的marks(pp)为字符型向量,不符合该参数要求的输入类型,因此触发报错。spatstat官方示例中所用的标记默认是因子类型,因此直接传入不会触发类型错误,二者的差异就在标记的变量类型上。
正确实现方式
方法1:调用时直接转换标记为因子
不需要修改原始点模式对象,调用函数时将标记转成因子传入by参数即可,返回结果会自动按年份分组存储:
nnd_result <- nndist(pp, by = as.factor(marks(pp)))
方法2:先拆分点模式再分组计算
如果需要单独保留每一年的点模式和对应距离结果,可以先按年份拆分点模式对象,再逐组计算:
# 按年份标记拆分点模式 pp_by_year <- split(pp, f = as.factor(marks(pp))) # 逐组计算最近邻距离 nnd_by_year <- lapply(pp_by_year, nndist)
补充说明
如果你的需求是计算所有点的全局最近邻距离,不需要按分组限定近邻范围,直接去掉by参数即可:
nnd_global <- nndist(pp)
内容的提问来源于stack exchange,提问作者syre
相关产品推荐
相关产品推荐

