R进阶 | R中的输出函数总结

输出函数

R中我们会用的比较多输出函数有以下五个:

  1. print()
  2. cat()
  3. message()
  4. warning()
  5. stop()

其中前两个函数将结果输出到标准输出即stdout
后三个则将结果输出到标准错误输出即stderr

如何屏蔽输出

suppressWarnings(), suppressMessages(), suppressPackageStartupMessages()等可以隐藏一些信息的输出。这在当你使用knitrrmarkdownSweave来创建动态文档的时候很有用。
比如,knitrchunk options中有error = F, message = F, and warning = F来分别隐藏相应的信息。而results = "hide"将屏蔽所有输出。

print()

print()出来的内容前面总是有一个[x]

print("Hello!")
#[1] "Hello!"

而合并输出需要使用paste()或者paste0()。前者在两个词间自动加空格。

print(paste("Hello","World!"))

[1] "Hello World!"
print(paste0("Hello","World!"))

[1] "HelloWorld!"

print(paste("Hello","World!", sep = ""))

[1] "HelloWorld!"

cat()

cat()print()的一些问题都解决了。唯一的要注意的是,换行要用\n或者fill = TRUE。一般cat最好只用在print()/show() methods

cat("Hello!\n")
Hello!

cat("Hello","World!\n")
Hello World!

cat("Hello","World!\n", sep = "")
HelloWorld!

message()

message()的输出是醒目的红色。原因是它的输出被作为stderr而不是stdout。messge可用来给用户信息量较大的输出。
paste0内置在函数中了。

message("Hello ","World!") # Note the space after Hello
"Hello World!"

messge()提供一个错误状态,可以被tryCatch()捕捉。

 tryCatch(message("hello\n"), message=function(e){cat("goodbye\n")})
 goodbye

warning

warning不要经常使用。输出的最上面会有一句红色的Warning message:。warning说明有潜在的问题。

image.png

stop

stop会将任务终止,并把控制权交还给用户。输出前带着”Error“字样。

image.png

我们应该在写函数的时候就尽量避免致命错误发生,导致stop()被执行。高效的代码捕捉到错误后有进一步的处理。错误可以用try()tryCatch捕捉。

# Suppress the error message
good = try(1 + 1, silent = TRUE)
bad = try(1 + "1", silent = TRUE)

image.png

上面的bad对象是一个try-error类的字符串,它的condition属性包含错误信息。可以这样对错误信息进行处理

if(class(bad) == "try-error")
  # Do something 

进一步关于error handling或debugging的建议可以查看《advanced R》这本书。

参考

1.Why is message() a better choice than print() in R for writing a package?
2.communicating-with-the-user

你可能感兴趣的:(R进阶 | R中的输出函数总结)