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
をつけないと改行されずに見にくくなるので注意が必要です。
自作関数の出力に色を付ける
自作関数の場合、表示するテキスト部分に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"))
}
既存の関数の出力に色を付ける
既存の関数に関しては、以下の工夫をすることで標準出力に色をつけることが出来ます。標準エラー出力(エラー、警告、メッセージ)に関してはうまく色を付けることが出来ませんでした。
- 色つけ関数の設定
以下のような色つけ関数を定義しておきます。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)
- 実行例
上記の関数を使うと以下のように出力に色を付けることが出来ます。
また、{}
と()
を以下のように組ませると、結果をオブジェクトに格納すると同時に標準出力に色を付けることが出来ます。
magrittrのパイプを使える場合には関数の後に以下のように付け加えれば済むので非常に見やすく、使いやすいです。
何かの時に役に立つかも?
個人的には出力に色がつくのはなんとなく嬉しいのですが、そんな常用することはないかもしれません。ただ何かの時に役に立つかも?
コンソールの出力をより理解している方であればもっと柔軟な使い方が出来るかもしれないので、ぜひ試してみてください。
参考にしたサイト
・easystats/insight
・Package ‘insight’
・RjpWiki R出力の記録
・R における警告やエラーメッセージなどを出力する方法 標準出力 ※ただし、WarningやMessageは標準エラー出力に出力されていると思う。
・Rコンソールのコマンド、結果、警告/メッセージ/エラーを組み合わせたRセッションのログファイルの作成方法