R语言用ROCR包prediction函数绘制ROC曲线重复运行报错求助
ROC绘制时prediction函数重复运行报错解决方案
根因说明
报错的核心原因是R包命名空间冲突:forecast等时间序列分析包中存在同名的prediction()函数,会覆盖ROCR包的prediction()方法。首次运行R环境未加载冲突包时,调用的是ROCR的分类场景prediction方法,可正常执行;后续环境加载冲突包后,调用的prediction()实际是时序场景的函数,需要调用ets()做时间序列拟合,和ROC计算的分类场景不匹配,因此抛出对应报错。
可行解决方案
- 最稳妥的修复方案是显式指定调用ROCR包的
prediction函数,无需调整包加载顺序,修改代码对应行即可:
# 原代码的prediction替换为ROCR::prediction train.pred <- ROCR::prediction(predict(LOL.out,type="response"),LOL.train$Win)
- 若需要频繁调用该函数,也可以在加载冲突包时屏蔽同名方法,以forecast包为例:
library(forecast, exclude = "prediction")
- 可执行以下命令确认当前
prediction函数的来源,快速排查冲突:
find("prediction") # 正常预期首个输出为"package:ROCR",如果首个为其他包则说明存在命名冲突
- 额外排查:检查全局工作环境中是否存在命名为
prediction的自定义变量/函数,存在的话执行rm(prediction)清除即可。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

