47  よくあるエラー

この章では、一般的なエラーの一覧と、トラブルシューティングの方法を紹介します。

訳注:R のエラーメッセージは、全てが日本語に翻訳されているわけではありません。日本語版があるものについては英語版の後に日本語版を示しています。

47.1 エラーメッセージの読み方

R のエラーは不可解なことも多々あるので、Google が頼りになります。エラーメッセージを “R” で検索し、StackExchange.comstackoverflow.comcommunity.rstudio.com、twitter(#rstats)、その他プログラマーが質問や回答を提出するためのフォーラムで最近の投稿を探します。似たような問題を解決した最近の投稿を探してみてください。

いくら探しても答えが見つからない場合は、再現可能な例(“reprex”)を作成して、自分で質問を投稿することを検討してください。再現可能な例を作成してフォーラムに投稿する方法については、ヘルプの章を参照してください。

47.2 よくあるエラー

以下に、いくつかの一般的なエラーと、その説明や解決策の可能性を示します。ここの内容は、Stack Overflow で R のエラーメッセージに関する最も一般的なフォーラムの投稿を分析した Noam Ross 氏の意見を部分的に参考にしています(分析結果はこちらをご覧ください)。

打ち間違いエラー

Error: unexpected symbol in:
  geom_histogram(stat = "identity")+
  tidyquant::geom_ma(n=7, size = 2, color = "red" lty"
エラー:   想定外のシンボルです  以下の部分: 
  geom_histogram(stat = "identity")+
  tidyquant::geom_ma(n=7, size = 2, color = "red" lty"

想定外のシンボル(“unexpected symbol”) と表示された場合は、カンマが抜けていないか確認してください。

パッケージエラー

could not find function "x"...
関数 "x" を見つけることができませんでした 

これは、関数名を間違って入力したか、パッケージをインストールまたは読み込み忘れた可能性があります。

Error in select(data, var) : unused argument (var)
select(data, var) でエラー:使われていない引数 %s

自分では dplyr::select() を使っているつもりでも、実際は select() 関数が MASS::select() によってマスクされています。dplyr:: を指定するか、パッケージの読み込み順を変えて、dplyr が他のパッケージの後に来るようにしてください。

マスクされたことによるエラーは、この他に plyr::summary()stats::filter() でよく発生します。conflicted パッケージの使用を検討してください。

Error in install.packages : ERROR: failed to lock directory ‘C:\Users\Name\Documents\R\win-library\4.0’ for modifying
Try removing ‘C:\Users\Name\Documents\R\win-library\4.0/00LOCK’
install.packages でエラー: ディレクトリ‘C:\Users\Name\Documents\R\win-library\4.0’の変更を禁止にできません。 
‘C:\Users\Name\Documents\R\win-library\4.0/00LOCK’を削除してください

もし、“00LOCK” ファイルを削除なさいというエラーが出た場合、コンピュータのディレクトリにある “R” ライブラリ(例:R/win-library/)に行き、“00LOCK” というフォルダを探してください。これを手動で削除して、再度パッケージをインストールしてみてください。以前、インストール作業を中断してこの状態になったと考えられます。

オブジェクトのエラー

No such file or directory:

エクスポートまたはインポートしようとしたときにこのエラーが表示される場合は、次のことを確認してください。ファイルとファイルパスのスペルを確認してください。また、パスにスラッシュが含まれている場合は、前向きのスラッシュ / であり、後ろ向きのスラッシュ \ (バックスラッシュ)ではないことを確認してください。また、正しいファイル拡張子を使用していることを確認してください(例:.csv、.xlsx)。

object 'x' not found 
エラー:  オブジェクト 'x' がありません 

これは、参照しているオブジェクトが存在していないことを意味します。ここよりも前のコードが正しく実行されなかったのではないでしょうか?

Error in 'x': subscript out of bounds
'x' でエラー : 添え字が許される範囲外です

このエラーは、存在しないもの(ベクトルやリストの要素)にアクセスしようとしたことを意味します。

関数の文法エラー

# mutate(x = recode(x, OLD = NEW) で変数 x を再定義せずに recode を実行した
Error: Problem with `mutate()` input `hospital`.
x argument ".x" is missing, with no default
i Input `hospital` is `recode(...)`.
引数 ".x" がありませんし、省略時既定値もありません 

上記のエラー(argument .x is missing, with no default)は、mutate() において、recode()replace_na() のように、第一引数にカラム名を指定することが期待される関数を指定している場合によく見られます。よく忘れることがあります。

ロジカルに関連するエラー

Error in if
if (...) { でエラー: 

このエラーは、TRUE・FALSEで判定できないものに if 文が適用されたために発生したと考えられます。

因子型のエラー

# 因子型に、許されていない値 ("Missing") を追加しようとする ( replace_na をオプションで使用)
Problem with `mutate()` input `age_cat`.
i invalid factor level, NA generated
i Input `age_cat` is `replace_na(age_cat, "Missing")`.invalid factor level, NA generated

このエラーは無効な因子型の水準(level)に関するものです。このエラーが表示された場合、因子型(あらかじめ定義されたレベルを含む)の列があり、そこに新しい値を追加しようとした可能性があります。新しい値を追加する前に、文字列型に変換してください。

プロットのエラー

Error: Insufficient values in manual scale. 3 needed but only 2 provided.

例えば、ggplot() 関数の scale_fill_manual() オプションを values = c(“orange”, “purple”) と設定していた場合、因子型の水準の数が十分ではありません。NA が正しく因子型の水準になっているかどうかを確認してください。

Can't add x object

ggplot のコマンドの最後に余分な + がついていると思われます。削除しましょう。

R Markdown エラー

エラーメッセージに Error in options[[sprintf("fig.%s", i)]] のような内容が含まれている場合は、各チャンクの先頭にある knitr のオプションが、out.width = または out.height = を正しく使用しており、fig.width = および fig.height = を使用していないことを確認してください。

その他

パイプされた dplyr 動詞を再配置して、途中でパイプを交換しなかったのか、再配置した後に最後からパイプを削除し忘れていないかを確認してください。

47.3 参考文献

こちらは、Rのよくあるエラーについてのブログです: R programming errors faced by beginners