在R中,程序运行时会输出一些提示性的文字,这对于使用者来说是比较重要的。这些文字能够帮助使用者获得必要的信息,从而对程序进行把握。在普通情况下我们一般会使用cat()message()等函数输出提示信息,然而这样输出的都是普通格式的文字,不太美观。那么有没有可以为提示“增光添色”的方法呢?下面让我们介绍一些操作,给R一些炫酷的颜色看看~

message()函数

普通打印提示信息一般使用message()函数

  1. message("ABC", "DEF")

QQ截图20210420093515.png

  1. testit <- function() {
  2. message("testing package startup messages")
  3. packageStartupMessage("initializing ...", appendLF = FALSE)
  4. Sys.sleep(1)
  5. packageStartupMessage(" done")
  6. }
  7. testit()

QQ截图20210420093604.png

  1. suppressPackageStartupMessages(testit())

QQ截图20210420093626.png

crayon改变输出字体颜色和格式

使用crayon包可以修改输出字体的颜色。

  1. library(crayon)
  1. cat(blue("Hello", "world!\n"))

QQ截图20210420093645.png

  1. cat("... to highlight the " %+% red("search term") %+% " in a block of text\n")

QQ截图20210420093757.png

  1. cat(yellow$bgMagenta$bold('Hello world!\n'))

QQ截图20210420093813.png

你还可以给不同类型的提示信息赋予不同的格式,比如:

  1. error <- red $ bold
  2. warn <- magenta $ underline
  1. cat(error("Error: subscript out of bounds!\n"))

QQ截图20210420093834.png

  1. cat(warn("Warning: shorter argument was recycled.\n"))

QQ截图20210420094007.png

特殊字符的使用

有时我们可以使用不同的字符符号标记不同的信息,使其更加的突出,clisymbols包可以给出一些常见的特殊字符。

  1. library(clisymbols)
  2. cat(symbol$tick, "All good\n")

QQ截图20210420094135.png

clisymbols包含了许多类型的字符符号,我们可以看一下:

  1. for (i in seq_along(symbol)) {
  2. cat(symbol[[i]], "\t", names(symbol)[i], "\n", sep = "")
  3. }

QQ截图20210420094204.png
QQ截图20210420094225.png

终极神器cli

cli提供了一套工具,可从语义元素(如标题,列表,警报,段落等)构建引人入胜的命令行界面(CLI)。支持通过类似CSS的语言进行主题化设置。

  1. library(cli)
  2. pkgs <- c("foo", "bar", "foobar")
  3. cli_alert_success("Downloaded {length(pkgs)} packages.")

QQ截图20210420094546.png

  1. db_url <- "example.com:port"
  2. cli_alert_info("Reopened database {.url {db_url}}.")

QQ截图20210420094556.png

  1. cli_alert_danger("Failed to connect to database.")

QQ截图20210420094636.png

  1. cli_h1("Heading 1")

QQ截图20210420094644.png

  1. fun <- function() {
  2. cli_ol()
  3. cli_li("Item 1")
  4. ulid <- cli_ul()
  5. cli_li("Subitem 1")
  6. cli_li("Subitem 2")
  7. cli_end(ulid)
  8. cli_li("Item 2")
  9. cli_end()
  10. }
  11. fun()

QQ截图20210420094653.png

现在,我们可以输出非常美观的信息啦~