初級のRエラー 70問
14種類のエラーを、それぞれ複数パターンずつ収録しています。
- 括弧の閉じ忘れによる構文エラーの原因と直し方関数呼び出しの丸括弧を閉じ忘れると、Rはどこまでが引数なのか判断できず、次の行のコードまで読み込み続けた末に構文エラーになります。
- 文字列の閉じクォート忘れによる構文エラー文字列を囲むクォートの片方を書き忘れると、それ以降のコードすべてが文字列の中身として読み込まれ続け、閉じクォートが見つからないまま構文エラーになります。
- c() のベクトルリテラルでカンマを付け忘れたときの構文エラーc()で要素を並べる際、区切りのカンマを付け忘れると、次の要素が予期しないトークンとして構文エラーになります。
- if の条件式に = を書くと構文エラーになる(比較は == が必要)if()の条件の中に==の代わりに=を書くと、Rはそれをif自体への名前付き引数の指定と解釈しようとして構文エラーになります。
- Error: object 'x' not found の原因と直し方宣言・代入していない名前を参照したときに出るエラーです。変数名のタイプミスのほか、代入する前に参照してしまったときにも起こります。
- could not find function "x" の原因と直し方存在しない名前の関数を呼び出したときに出るエラーです。関数名を1文字でも間違えると、Rは似た名前を推測して実行してはくれず、その場でエラーになります。
- 文字列と数値を + で連結すると non-numeric argument エラーになるRの+演算子は数値同士専用で、文字列を連結する演算子ではありません。文字列と数値を+でつなごうとすると、暗黙の型変換が行われずエラーになります。
- if (NA > 1) が missing value where TRUE/FALSE needed になる理由NAを含む式をif()の条件に使うと、真偽が定まらないため「missing value where TRUE/FALSE needed」というエラーで止まります。
- argument is missing, with no default の原因と直し方関数が必要とする引数を渡し忘れると、デフォルト値が定義されていない限りこのエラーになります。
- unused argument の原因と直し方関数が受け取れる数より多い引数を渡すと、余分な引数が「使われない引数」としてエラーになります。
- リストの [[ ]] で範囲外アクセスすると subscript out of bounds になるリストに対して[[ ]]で存在しない添字を指定すると、subscript out of boundsというエラーになります。ベクトルの[ ]と違い、[[ ]]は範囲外を静かに見逃しません。
- ベクトルの範囲外アクセスはエラーにならず NA を返す存在しない添字でベクトルにアクセスしても、Rはエラーを出さずNAを返すだけです。その後NAを使った計算をすると、結果全体がNAとして伝播します。
- / は整数同士でも常に小数を返す(%/% との違い)Rの/演算子は、両辺が整数であっても常に小数(浮動小数点数)を返します。商の整数部分だけが欲しい場合は%/%を使う必要があります。
- Rscript では代入や式の結果が自動では表示されない対話コンソールと違い、Rscriptで実行するスクリプトでは代入文の結果は表示されません。値を画面に出したい場合は明示的にprint()やcat()を呼ぶ必要があります。