在dismo::maxent()中传入指定测试出现记录报错,如何解决?
解决dismo::maxent()指定测试出现记录的问题
方法一:使用maxent()内置的test参数(推荐)
dismo包的maxent()函数提供了专门的test参数来传入测试出现记录,无需通过args传递testsamplesfile,这能避免文件路径和格式适配的问题。步骤如下:
- 读取测试出现记录:将测试CSV文件读入R,转换为与训练集格式一致的对象:
test_occ <- read.csv("C:/Users/Danielle/Downloads/presence_records_gridded_300.csv") # 若需转换为空间点对象(确保坐标列与环境图层匹配) library(sp) test_occ_sp <- SpatialPoints(test_occ[, c("x", "y")], proj4string = CRS(proj4string(env)))
- 调整maxent调用代码:从
mod_args中移除testsamplesfile参数,添加test参数传入测试记录:
# 移除testsamplesfile项 mod_args <- mod_args[!grepl("testsamplesfile", mod_args)] maxent_train <- dismo::maxent( env, occ_train, bgr, args = mod_args, test = test_occ_sp, # 或直接传入test_occ数据框 removeDuplicates = FALSE )
方法二:修复testsamplesfile参数的使用
若坚持使用testsamplesfile,需解决两个核心问题:
- 移除冲突参数:
randomtestpoints=40与testsamplesfile互斥,MaxEnt无法同时使用随机测试点和指定测试文件,必须删除其中一个:
# 移除randomtestpoints项 mod_args <- mod_args[!grepl("randomtestpoints", mod_args)]
- 确保文件格式正确:测试文件需为纯CSV格式,每行对应一条出现记录,仅包含坐标列(无表头或表头与训练集完全一致),且坐标系统与环境变量图层
env匹配。
调整后重新运行原代码即可。
内容的提问来源于stack exchange,提问作者Danielle
相关产品推荐
相关产品推荐

