R语言MaxEnt偏置文件创建报错:kde2d存在未使用参数lins
MaxEnt偏置文件创建中kde2d函数报错的解决方法
问题背景
我跟着YouTube上的教程《如何选择MaxEnt运行设置及创建偏置文件》搭建MaxEnt模型,已经导入出现点数据(occ)并完成环境变量堆叠(env),现在需要创建偏置文件:
- 已成功执行代码:
occur.ras <- rasterize(occ,env,1)
- 但执行后续代码时触发错误:
presences <- which(values(occur.ras) == 1) pres.locs <- coordinates(occur.ras)[presences,] dens <- kde2d(pres.locs[,1], pres.locs[,2], n=c(nrow(occur.ras), ncol(occur.ras)), lins=c(extent(env)[1], extent(env)[2], extent(env)[3], extent(env)[4])) dens.ras <- raster(dens,env) dens.ras2 <- resample(dens.ras, env)
报错信息:
Error in kde2d(pres.locs[, 1], pres.locs[, 2], n = c(nrow(occur.ras), : unused argument (lins = c(extent(env)[1], extent(env)[2], extent(env)[3], extent(env)[4]))
解决方法
问题核心是参数名拼写错误:kde2d(来自MASS包)的范围约束参数是lims,不是你写的lins。修正参数名后,代码就能正常运行,同时保留你想用环境变量范围约束密度计算的逻辑,避免后续出现范围不匹配的问题。
修正后的完整代码:
presences <- which(values(occur.ras) == 1) pres.locs <- coordinates(occur.ras)[presences,] dens <- kde2d(pres.locs[,1], pres.locs[,2], n=c(nrow(occur.ras), ncol(occur.ras)), lims=c(extent(env)[1], extent(env)[2], extent(env)[3], extent(env)[4])) dens.ras <- raster(dens,env) dens.ras2 <- resample(dens.ras, env)
补充说明
- 若直接移除
lims参数,kde2d会默认用出现点的x/y坐标范围计算密度,生成的偏置文件范围可能和环境变量env不一致,后续建模时容易出现图层不匹配的错误,因此不建议直接移除。 - 确保你的
MASS包是最新版本,避免因版本过低导致参数兼容性问题。
内容的提问来源于stack exchange,提问作者MVDM
相关产品推荐
相关产品推荐

