LoginSignup
2
0

More than 3 years have passed since last update.

R 標準出力(と標準エラー出力)に色を付ける

Last updated at Posted at 2020-09-30

RをUbuntuやWSLで使っていると、出力の部分に色がついていなくて入力部分との区別が難しいことがあります。
insight::print_colorを使うと標準出力に色を付けることが出来ます。
※ただしWidndowsで標準のRguiでは色が出ません。RStudioだと色が出せます。

insight::print_colorについて

insight::print_colorはパッケージinsightは以前から紹介しているeasystats系のパッケージの一つで、主にモデルのデータの取得などのユーティリティ部分を担っています。
その一環として、insight::print_colorはeasystats系のパッケージの出力結果を見やすくするために用いられています。統計量などをコンソールに出力することが多いパッケージならではの工夫です。

  • インストール
install.packages("insight")
  • 基本的な使い方

基本的には

insight::print_color(text = <表示したいテキスト>, color = <表示したい色>)

というように使います。colorは"red"、"yellow"、"green"、"blue"、"violet"、"cyan"、"grey"を指定することが出来ます。
ただし、テキストの最後に\nをつけないと改行されずに見にくくなるので注意が必要です。
color2.png

自作関数の出力に色を付ける

自作関数の場合、表示するテキスト部分にinsight::print_colorを適用することで、標準出力、標準エラー出力両方に色を付けることが出来ます。

check <- function(x) {
    if (is.na(x)) warning(insight::print_color("`x` is NA.\n", "red"))
    else if (!is.numeric(x)) warning(insight::print_color("`x` is not numeric.\n", "violet"))
    else if (x > 0) cat(insight::print_color("`x` is positive.\n", "green"))
    else if (x == 0) cat(insight::print_color("`x` is zero.\n", "grey"))
    else if (x < 0) cat(insight::print_color("`x` is netgative.\n", "blue"))
}

col_func2.png

既存の関数の出力に色を付ける

既存の関数に関しては、以下の工夫をすることで標準出力に色をつけることが出来ます。標準エラー出力(エラー、警告、メッセージ)に関してはうまく色を付けることが出来ませんでした。

  • 色つけ関数の設定

以下のような色つけ関数を定義しておきます。capture.outputで出力を文字列として拾い、paste0で改行を付け加えたあと、insight::print_colorを適用しています。

dye_output <- function(x, color) insight::print_color(paste0(capture.output(x), "\n"), color = color)

# パイプを使う場合
dye_output <- function(x, color) x %>% capture.output(.) %>% paste0(., "\n") %>% insight::print_color(., color = color)
  • 実行例

上記の関数を使うと以下のように出力に色を付けることが出来ます。
col_eval2.png

また、{}()を以下のように組ませると、結果をオブジェクトに格納すると同時に標準出力に色を付けることが出来ます。
col_result2.png

magrittrのパイプを使える場合には関数の後に以下のように付け加えれば済むので非常に見やすく、使いやすいです。
col_pipe2.png

何かの時に役に立つかも?

個人的には出力に色がつくのはなんとなく嬉しいのですが、そんな常用することはないかもしれません。ただ何かの時に役に立つかも?
コンソールの出力をより理解している方であればもっと柔軟な使い方が出来るかもしれないので、ぜひ試してみてください。

参考にしたサイト

easystats/insight
Package ‘insight’
RjpWiki R出力の記録
R における警告やエラーメッセージなどを出力する方法 標準出力 ※ただし、WarningやMessageは標準エラー出力に出力されていると思う。
Rコンソールのコマンド、結果、警告/メッセージ/エラーを組み合わせたRセッションのログファイルの作成方法

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0