R中BIOMOD_ModelingOptions()函数参数错误的原因是什么?
问题背景
我一直用R代码基于大西洋森林小型哺乳动物的出现记录和环境变量预测值,预测它们的未来分布。去年代码运行完全正常,但现在出现如下错误:
Error in BIOMOD_ModelingOptions(MAXENT.Phillips = list(path_to_maxent.jar = "C:/Users/Isabella/Documents/R/library/dismo/java", :
unused argument (MAXENT.Phillips = list(path_to_maxent.jar = "C:/Users/Isabella/Documents/R/library/dismo/java", memory_allocated = NULL, maximumiterations = 500, linear = T, quadratic = T, product = F, threshold = F, hinge = F, lq2lqptthreshold = 80, l2lqthreshold = 10, hingethreshold = 15, beta_threshold = -1, beta_categorical = -1, beta_lqp = -1, beta_hinge = -1, betamultiplier = 0.5, defaultprevalence = 0.5))
起初以为是path_to_maxent.jar路径问题,修改后发现路径正确。同事在非Windows电脑上运行相同代码无错误,我已更新R及所有R包,问题仍未解决。
问题原因与解决方案
这个错误的核心是BIOMOD2包版本更新后,MaxEnt相关参数的命名规则发生了变化:旧版本中使用MAXENT.Phillips作为参数名调用模型,但新版本里该参数名已改为Maxent(注意大小写差异)。
具体解决步骤:
- 直接将代码中的
MAXENT.Phillips替换为Maxent - 确认
path_to_maxent.jar路径无误(你已验证过路径,可跳过此步骤)
修改后的代码示例:
BIOMOD_ModelingOptions( Maxent = list( path_to_maxent.jar = "C:/Users/Isabella/Documents/R/library/dismo/java", memory_allocated = NULL, maximumiterations = 500, linear = T, quadratic = T, product = F, threshold = F, hinge = F, lq2lqptthreshold = 80, l2lqthreshold = 10, hingethreshold = 15, beta_threshold = -1, beta_categorical = -1, beta_lqp = -1, beta_hinge = -1, betamultiplier = 0.5, defaultprevalence = 0.5 ) )
同事的非Windows电脑未报错,大概率是因为她的BIOMOD2版本仍停留在旧版,或已提前适配新参数名;而你更新后使用了新版BIOMOD2,必须修改参数名才能正常运行。
内容的提问来源于stack exchange,提问作者Isabella Bento

