抱歉,这是6天后的similar post,但我怀疑根本原因可能是不同的.另一篇similar帖子说,为了确保绘图包是library‘d,但它应该(在下面讨论)并且在今天下午之前工作得很好.

我有一个package,它的main function自动化了增强回归树建模的过程.这是一个庞大的功能,可以做很多事情.今天我做了一些小改动,增加了一个包含随机变量的功能.尽管这似乎没有以任何方式影响后面关于模型求值的部分,但当我现在运行该函数时,我得到了标题错误.这一点来自以下部分:

evalmetrics <- c("ROC", "kappa", "prevalence", "TPR", "TNR", "FPR", "FNR", "CCR", "PPP", "NPP", "MCR", "OR")
for (s in evalmetrics) {
 png(filename = paste0("./",names(samples[i]),"/Bin_Eval_", s, ".png"))
 plot(e, s)
 dev.off()}

edismo::evaluate创建:e <- evaluate(p = pres,a = abs)

当保存为rds文件时,它是类Modelvaluation的S4对象,它应该是这样的.dismo::plot人想要:

x   Object of class ModelEvaluation
y   Character. Either 'ROC' or a threshold dependent measure such as 'kappa', 'TPR'

因此,当它达到plot%的线时,一切都"井然有序".当我进入gbm.auto函数并逐行运行它时,一切都很正常.当我使用导出的e文件仅运行该部分时,它工作得很好.但是,如果我将gbm.auto作为一个函数运行,我会得到错误.看起来plot岁的人表现得像base::plot人,而不是dismo::plot人.但我不知道为什么这会突然开始发生.我也不能做什么:我@import整个dismo包,plot不是dismo出口,所以我不能强迫它与dismo::plot.

我对R中绘图的有限理解是,如果对象类是特定的,那么包可以推翻基本/图形作为唯一的打印引擎,然后它们将自己的旋转放在事物上.但我的对象类就是那个特定的东西,它工作了很多年,突然之间就不...但我无论如何也想不出如何进一步调试或修复它.

欢迎有任何 idea .伪可重现示例:(drumline)

remotes::install_github("SimonDedman/gbm.auto")
library(gbm.auto)
drumline <- readRDS("2023-03-07_drumline_reefs_DtDropOff.rds")
gbm.auto(samples = as.data.frame(drumline),
         expvar = c("Habitat", "Tide", "Season", "LunarPhase", "Latitude", "Longitude", "Depth_m", "Temperature_C", "Hour", "Yearday", "Month", "DtDropOff"),
         resvar = "CaribbeanReef_CPUE",
         tc = 13,
         lr = list(0.001, 0.0000001),
         bf = 0.9,
         fam1 = "bernoulli",
         smooth = TRUE,
         simp = FALSE,
         savegbm = FALSE,
         BnW = FALSE)

推荐答案

我可以通过将以下几行添加到dismoNAMESPACE文件并从源代码重新安装dismo来使其正常工作:

exportMethods(plot)
exportClasses(ModelEvaluation)

然后从gbm.autoNAMESPACE文件中删除此行,并重新安装源代码中的gbm.auto:

importFrom(graphics, plot)

第二步确保plot解析为S4通用函数dismo::plot而不是S3通用函数graphics::plot.

在任何情况下,not都应该依赖于其他包中未导出的类或方法.您可能想要联系maintainer("dismo").

R相关问答推荐

通过Plotly绘制线串几何形状的3D图

从具有随机模式的字符串中提取值

如何将具有重复名称的收件箱合并到R中的另一列中,而结果不同?

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

使用R的序列覆盖

以R中的正确顺序将日期时间字符列转换为posixct

根据R中两个变量的两个条件删除带有dspirr的行

有没有一种方法可以从函数中创建一个值的列表,然后将这些值变成R中的直方图?我一直觉得不行

在不安装软件包的情况下测试更新

从R导出全局环境中的所有sf(numrames)对象

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

如何读取CSV的特定列时,给定标题作为向量

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

减go R中列表的所有唯一元素对

是否有可能从边界中找到一个点值?

使用R、拼图和可能的网格包绘制两个地块的公共垂直线

roxygen2正在处理太多的文件

R没有按顺序显示我的有序系数?

以R表示的NaN值的IS.NA状态

我有2011-2022年的年度数据.如何计算最低年份和最高年份之间的差额?