You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言调用SpatialFiltering函数提示找不到函数报错解决方案

报错根因

触发could not find function "SpatialFiltering"的直接原因是当前加载的R包中无对应函数:早期版本spdep曾内置空间滤波相关方法,后续空间计量类函数被拆分至独立的spatialreg包,未安装、加载该包时无法直接调用函数。
另外原代码存在数据错配隐患:使用未关联属性表的kanto空间对象构造三角网邻接关系,但滤波传入的属性数据集为lph,二者观测数量、顺序不匹配时会触发维度报错。

修复步骤
  • 安装缺失的spatialreg依赖包,在R控制台运行安装命令即可,若RStudio Cloud环境下载速度慢,可先切换至国内CRAN镜像再执行安装:
install.packages("spatialreg")
  • 在现有代码的包加载区块补充spatialreg的加载语句,语句需放在调用SpatialFiltering()之前:
library(spatialreg)
  • 统一使用属性、几何已关联对齐的kanto_lph数据集构造邻接关系、运行模型,避免数据顺序、数量不匹配的问题。
修正后可运行核心代码
library(spdep)
library(spatialreg)
library(spatstat)
library(spgwr)
library(nlme)
library(lme4)
library(ggplot2)
needs::prioritize(magrittr)

kanto <- sf::st_read('/cloud/project/asakura_sp_data/kanto_area.shp')
lph <- readr::read_csv("/cloud/project/asakura_sp_data/lph.csv")
kanto_lph <- dplyr::inner_join(kanto, lph, by=c("JCODE"="JCODE"))

# 基于对齐后的数据集构造三角网邻接
kanto_lph.tri.nb <- sf::st_coordinates(sf::st_centroid(kanto_lph)) %>%
  spdep::tri2nb()

lph.glm <- glm(LPH~POPD+EMP3D+offset(log(S)), data=kanto_lph)
lph.gam1 <- mgcv::gam(LPH~POPD+EMP3D+s(Easting, Northing), data=kanto_lph)
lph.gam2 <- mgcv::gam(LPH~POPD+EMP3D+offset(log(S))+s(Easting, Northing), data=kanto_lph)

# 运行空间滤波
lph.SF <- SpatialFiltering(
  LPH~POPD+EMP3D, 
  data=kanto_lph, 
  nb=kanto_lph.tri.nb, 
  style="W"
)

若加载包后仍提示找不到函数,可直接通过命名空间调用:spatialreg::SpatialFiltering(),避免与其他包的同名函数冲突。

内容的提问来源于stack exchange,提问作者farinelli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 10:27:22