R语言如何修改stop()函数输出中的默认Error标签
问题
请问能否修改R语言中stop()函数输出内容里的Error默认标签?
举例说明:
执行代码:
stop("This is a error!")
默认输出:
Error: This is a error!
期望输出:
Incorrect: This is a error!
要求必须使用stop函数实现,不可替换为warning或message函数。
解决方案
可以实现,通过自定义错误条件类并重写其打印方法即可,全程仅使用原生stop函数,符合要求。
实现步骤
- 先定义自定义错误类的S3打印方法,替换默认的
Error前缀:
# 自定义错误类myError的打印逻辑 print.myError <- function(x, ...) { cat("Incorrect:", x$message, "\n") }
- 调用
stop时传入构造好的自定义错误对象:
stop( structure( list(message = "This is a error!"), class = c("myError", "error", "condition") ) )
运行输出
Incorrect: This is a error!
说明
该方法完全遵循R原生的错误处理流程,触发后会正常中断后续代码执行,行为和原生stop完全一致,仅修改了输出的前缀标签。如果需要批量修改所有stop的输出前缀,只要把所有stop的入参替换为上述自定义错误对象即可。
内容的提问来源于stack exchange,提问作者neves
相关产品推荐
相关产品推荐

