京橋のバイオインフォマティシャンの日常

データ分析、コマンドライン、プログラミングについての技術資料・自己アップデート・悩み事などをまとめています。現在、DL勉強中。

【Rのジミ〜な小技シリーズ】Rコンソールにカラーテキストを表示するTips

R言語で、message()関数を使うと、赤い文字列がコンソールに表示されるけど、 もっとほかの色で、コンソール表示ができれば良いのにとか思ったりしないでしょうか??

今回、こういう細かい悩みを解決する記事を書いてみました。

base::message()関数

messageはデフォルトで使えて、通常、赤文字で出力される。

message(1)
message("Hello world!")

f:id:skume:20210908144001p:plain:w350

Crayon - stylish terminal output in R

Crayonは、Colored terminal output on terminalsを可能にしてくれるパッケージである。

さっそく、インストールしてみる。

Crayonのインストール

devtools::install_github("gaborcsardi/crayon")
library(crayon)

実行

実行時には、message()あるいはcat()を使う。

#ブラック
cat(black("Hello world!"))
#ブルー
cat(blue("Hello world!"))
#ミドリ
cat(green("Hello world!"))
#マジェンダ
cat(magenta("Hello world!"))
#シアン
cat(cyan("Hello world!"))

#背景ブラック、文字白
cat(bgBlack(white("Hello world!")))
#背景赤、文字白
cat(bgRed(white("Hello world!")))
#背景ミドリ、文字白
cat(bgGreen(white("Hello world!")))
#背景イエロー、文字白
cat(bgYellow(white("Hello world!")))
#背景ブルー、文字白
cat(bgBlue(white("Hello world!")))
#背景マジェンダ、文字白
cat(bgMagenta(white("Hello world!")))
#背景シアン、文字白
cat(bgCyan(white("Hello world!")))

f:id:skume:20210908143756p:plain:w500

textcolor: Colourise text for display in the terminal.

GerminaRパッケージ内のtextcolorでも、カラーテキスト出力がサポートされている。

GerminaRのインストール

install.packages("GerminaR")
library(GerminaR)

メモ: intiパッケージにも同じ関数がある。

実行

textcolor関数で使えるカラーパレットは、 black, blue, brown, cyan, dark gray, green, light blue, light cyan, light gray, light green, light purple, light red, purple, red, white, yellow らしいです。

実行時には、message()あるいはcat()で出力させる。

ただ、背景色はうまく表示されない。。

#ブルー
message(textcolor("Hello world!", fg = "blue"))
cat(textcolor("Hello world!", fg = "blue"))

#ダークグレイ
message(textcolor("Hello world!", fg = "dark gray"))
cat(textcolor("Hello world!", fg = "dark gray"))

#パープル
message(textcolor("Hello world!", fg = "purple"))
cat(textcolor("Hello world!", fg = "purple"))

#ブラウン
message(textcolor("Hello world!", fg = "brown"))
cat(textcolor("Hello world!", fg = "brown"))

f:id:skume:20210908143802p:plain:w400

参考資料

stackoverflow.com

rdrr.io

rdrr.io