メモ:R 4.0.4で日本語の文字列がうまく表示されない問題について

(免責事項: WindowsmacOSで動作確認するのがめんどくさくてうろ覚えで書いています。間違ってたらご指摘ください)

裏Rjpwikiで言及されていて知った人も多そうですが、R 4.0.4は日本語を含むマルチバイト文字の表示にバグがあります。 具体的には、次のように、ほとんどの文字が\uXXXXというUnicodeエスケープされた形式で表示されてしまいます。

"鬼は外"
#> [1] "\u9b3cは\u5916"

この問題はWindowsmacOSで発生し、Linuxは大丈夫です(私はUbuntuを使ってるので気付かなかった)。 ただし、これは表示だけの問題で中身のデータには問題ありません。また、表示も print() だけの問題です。 例えば、message()cat()で表示してみれば普通に表示されることが確認できるはずです。

message("鬼は外")
#> 鬼は外

また、次のような場合もデフォルトのprint()ではない表示方法が使われているので問題は起こりません。

  • tibble の列として表示された場合(data.frame だとダメ)
  • glue のデータとして表示された場合

ちなみに、この問題はすでに開発版および patched 版では修正されていますが、 すでにリリースされてしまった R 4.0.4 に取り込まれることはありません。 次のリリース(おそらくは R 4.1.0?)を待つか patched 版を使いましょう。

原因は、絵文字対応?か何かで print() が対応するUnicodeの範囲を拡張した変更をリリース版に取り込むのをミスった、 ということのようでした。

It looks like a line in the iswprint table got deleted in the merge from R-devel. (https://stat.ethz.ch/pipermail/r-devel/2021-February/080473.html)

ちなみに、私もぜんぜんやってないので偉そうなことは言えないのですが、もしRのバグを発見された場合はR bugzillaに報告しましょう。 Twitter で日本語で騒いでいても勝手にバグが直ったりはしないです。

R bugzilla へのアカウント登録は、以下に書かれているように理由を添えて指定の宛先(ここでは伏せたのでリンク先をご参照ください)にメールを送るとすぐにつくってもらえます。 私の場合は5時間で返事が来ました。

NOTE: due to abuse by spammers, since 2016-07-09 only “members” (including all who have previously submitted bugs) can submit new bugs on R’s Bugzilla. In order to get a bugzilla account (i.e., become “member”), please send an e-mail (from the address you want to use as your login) to bug-report-request@...省略... briefly explaining why, and a volunteer will add you to R’s Bugzilla members. www.r-project.org

その他の報告の仕方のマナーなどについても上のリンク先に書かれています。

バグかどうか確信が持てない、英語で報告する自信がない、といった場合にはまず r-wakalang#r_chotowakaru チャンネルあたりに相談してみるとよいと思います。