gpt4 book ai didi

r - R : message/cat/print/warning/error? 的良好编码习惯

转载 作者:行者123 更新时间:2023-12-05 02:40:09 27 4
gpt4 key购买 nike

关于R包开发,当函数应该返回错误消息或警告时,最好使用什么?:

  • cat()
  • 打印()
  • 消息()
  • error()
  • 警告()

例如在这个函数中,当 a 或 b 不是数字时,我应该使用哪个来返回错误消息。

function_sum_two_nums <- function(a, b){

## Check if the a and b are numbers

if(is.numeric(a) & is.numeric(b)){
return(a+b)
} else{
print/cat/message/error/warning('a or b are not numbers')
}
}

最佳答案

你的例子

在这种特殊情况下,唯一明智的选择是使用 stop(),因为这种情况是错误的,而您想停止该函数从遇到错误时继续

其他选项将允许代码执行继续,返回函数中最后计算的表达式。这不是您想要的。

一般情况

当您想为最终用户提供输出时,请使用 print()。在相同情况下,使用 cat() 可以更好地控制输出。这适合“库代码”,因为它不容易被抑制。但是,这是执行任务的正确方法,例如将数据发送到标准输出以便在 shell 管道中进行处理,或者编写“ pretty-print ”有趣内容的函数。

message() 用于信息性消息,这些消息不是警告或错误,而是在用户未明确请求输出的某些计算过程中出现的。例如,如果您正在开发一个包,并且您想要通知用户他们可以安装一个特殊的依赖项以提高性能,您可以使用 message() 来发出此消息。用户可以使用 suppressMessages 抑制消息。

使用 warning() 来指示不需要函数执行来中止的问题情况。例如,如果用户请求的操作非常慢,或者可能会在以后的计算中导致数值稳定性问题。用户可以使用 suppressWarnings 抑制警告。

如上,当出现完全错误以至于函数无法继续执行时,使用error()。可以捕获和处理错误(例如,使用 tryCatch),但用户必须明确地做到这一点。

技术部分

其他函数:messagewarningstop 每个信号(或“抛出”)一个条件。我不会详细说明条件是什么,因为 Wickham 在 chapter 8 of Advanced R 中介绍了它们.

非常简单的版本是所有这 3 个都向 R 运行时引入一个信号,它自己什么都不做。然后,用户可以为特定条件安装“处理程序”,这是一个在发出条件信号时调用的函数。

R 对于由 message()warning(),error() 发出信号的条件有默认处理程序。这就是这些函数的标准行为是如何实现的。

关于r - R : message/cat/print/warning/error? 的良好编码习惯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68711678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com