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

标签 r printing cat

关于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/

相关文章:

与一个级别相比, reshape Actor 阵容

javascript - 无法通过 IPP 在另一个纸盘上打印

linux - 对目录中的文件进行排序,然后打印内容

bash - 我需要 cat 将 heredoc 写入文件吗?

r - 使用 R 中的 data.table 进行高效分组

r - 如何在 R 中的一组不同的变量和模型上创建循环

java - 如何在 java 中转换 unicode 以更正 CHARSET 以在 LINE-PRINTER 上打印

java - 一次打印一个条目的链表节点 (Java)

linux - Bash 在使用 cat 找不到参数时打印帮助消息

r - 如何在 R 中调整树状图输出的大小