R言語でコードを書いていると、赤いエラーメッセージが表示されて「うわっ!」となった経験はありませんか?
エラーメッセージは英語で表示されることが多く、初心者にとっては何が問題なのか分かりにくいですよね。
でも安心してください。実は、R言語のエラーの多くはよくあるパターンに当てはまります。
今回は、R言語で頻繁に遭遇するエラーを一覧形式で紹介し、それぞれの原因と具体的な解決方法を解説します。
R言語のエラーメッセージの基本

まず、R言語のエラーメッセージの読み方を理解しましょう。
エラー、警告、メッセージの違い
R言語では、3種類の出力があります。
エラー(Error)
プログラムの実行が完全に停止します。
赤い文字で表示され、必ず修正する必要があります。
警告(Warning)
プログラムは実行されますが、何か問題がある可能性を知らせてくれます。
結果が意図したものと違う可能性があるため、無視せず確認しましょう。
メッセージ(Message)
単なる情報提供で、エラーではありません。
パッケージの読み込み時などに表示されることが多いです。
エラーメッセージの言語を切り替える
日本語版のRを使っていても、エラーメッセージを英語にすると、Google検索で解決策を見つけやすくなります。
一時的に英語に切り替える方法:
Sys.setenv(LANGUAGE="en")
日本語に戻す方法:
Sys.setenv(LANGUAGE="ja")
英語のエラーメッセージで検索すると、Stack OverflowなどのQ&Aサイトで同じ問題の解決策が見つかりやすいですよ。
よくあるエラー一覧と解決方法
ここからは、実際によく遭遇するエラーを紹介していきます。
1. オブジェクトが見つからない
エラーメッセージ
Error: object 'x' not found
または日本語版では:
以下にエラー: オブジェクト 'x' がありません
原因
定義していない変数やオブジェクトを使おうとしています。
タイプミス(綴りの間違い)も非常に多い原因です。
解決方法
変数名のスペルが正しいか確認しましょう。
R言語は大文字と小文字を区別します。Dataとdataは別物です。
実際にその変数を定義しているか確認してください。
# エラーになる例
print(my_data) # my_dataを定義していない
# 正しい例
my_data <- c(1, 2, 3)
print(my_data)
Environment(環境パネル)を見て、変数が実際に存在するか確認するのも有効です。
2. 関数が見つからない
エラーメッセージ
Error: could not find function "function_name"
または:
以下にエラー: 関数 "function_name" を見つけることができませんでした
原因
パッケージを読み込んでいない、または関数名のタイプミスです。
解決方法
必要なパッケージをlibrary()で読み込んでいるか確認しましょう。
# エラーになる例
result <- filter(data, var > 10) # dplyrを読み込んでいない
# 正しい例
library(dplyr)
result <- filter(data, var > 10)
パッケージをインストールしていない場合は、まずインストールが必要です。
install.packages("dplyr") # コンソールで実行
library(dplyr) # スクリプトで実行
関数名のスペルミスもよくあります。大文字小文字も含めて正確に入力しましょう。
3. 予期しないシンボル
エラーメッセージ
Error: unexpected symbol in "..."
または:
以下にエラー: 予期しないシンボルです
原因
カンマ、括弧、引用符などの記号が抜けている、または多すぎます。
解決方法
エラーメッセージに表示された行を注意深く確認しましょう。
カンマの抜けが非常に多いです。
# エラーになる例
ggplot(data, aes(x = var1 y = var2)) # カンマが抜けている
# 正しい例
ggplot(data, aes(x = var1, y = var2))
括弧の対応も確認してください。開き括弧と閉じ括弧の数は一致していますか?
RStudioは括弧の対応をハイライトで教えてくれるので活用しましょう。
4. 引数が使われていない
エラーメッセージ
Error: unused argument (...)
または:
以下にエラー: 使われていない引数
原因
関数が認識しない引数を指定しています。
よくあるのは、異なるパッケージの同名関数が競合している場合です。
解決方法
関数のヘルプを確認して、正しい引数名を使いましょう。
?function_name # ヘルプを表示
パッケージを明示的に指定すると解決することがあります。
# dplyrのselect関数を明示的に指定
dplyr::select(data, var1, var2)
MASSSパッケージとdplyrパッケージのselect()関数はよく競合します。
dplyrを後から読み込むか、dplyr::を明示的につけましょう。
5. 添え字が範囲外
エラーメッセージ
Error: subscript out of bounds
または:
以下にエラー: 添え字が限界を超えています
原因
存在しない要素にアクセスしようとしています。
解決方法
ベクトルやリストの長さを確認しましょう。
# エラーになる例
vec <- c(1, 2, 3)
vec[5] # 5番目の要素は存在しない → NAが返る
# データフレームでは
df[10, ] # 10行目が存在しない場合はエラー
length()やnrow()でサイズを確認してからアクセスしましょう。
length(vec) # ベクトルの長さ
nrow(df) # データフレームの行数
ncol(df) # データフレームの列数
R言語のインデックスは1から始まります(0から始まる言語ではありません)。
6. 引数.xが見つからない
エラーメッセージ
Error: argument ".x" is missing, with no default
原因
mutate()の中でrecode()やreplace_na()を使う際、列名を指定し忘れています。
解決方法
関数の第一引数に列名を明示的に指定しましょう。
# エラーになる例
df %>%
mutate(new_col = recode(OLD = "new1", NEW = "new2"))
# 正しい例
df %>%
mutate(new_col = recode(old_col, OLD = "new1", NEW = "new2"))
replace_na()でも同様です。
# 正しい例
df %>%
mutate(age_cat = replace_na(age_cat, "Missing"))
7. ファイルが開けない
エラーメッセージ
Error in file(file, "rt"): cannot open the connection
Warning: cannot open file 'data.csv': No such file or directory
原因
ファイルのパスが間違っている、またはファイルが存在しません。
解決方法
作業ディレクトリを確認しましょう。
getwd() # 現在の作業ディレクトリを確認
ファイルが実際に存在する場所を確認してください。
RStudioのFilesパネルで確認できます。
作業ディレクトリの設定が重要です。
setwd("C:/Users/YourName/Documents/project") # Windowsの場合
setwd("/Users/YourName/Documents/project") # Macの場合
推奨方法:Rプロジェクトを使う
RStudioでプロジェクト(.Rprojファイル)を作成すると、作業ディレクトリが自動的に設定されます。
File → New Project から作成しましょう。
8. 非数値引数で二項演算子を使用
エラーメッセージ
Error in x + y : non-numeric argument to binary operator
原因
数値でないデータ(文字列など)に対して計算を行おうとしています。
解決方法
データ型を確認しましょう。
class(x) # データ型を確認
文字列を数値に変換する必要があります。
# エラーになる例
x <- "10"
y <- 5
result <- x + y # エラー
# 正しい例
x <- as.numeric("10")
y <- 5
result <- x + y # 15
CSVファイルを読み込む際、数値列が文字列として読み込まれることがあります。
str(data)でデータ構造を確認しましょう。
9. ベクトルの長さが一致しない
エラーメッセージ
Error: number of items to replace is not a multiple of replacement length
原因
代入しようとしている値の数が、元のオブジェクトのサイズと一致していません。
解決方法
両方のベクトルの長さを確認しましょう。
# エラーになる例
vec <- c(1, 2, 3, 4, 5)
vec[1:3] <- c(10, 20) # 長さが一致しない
# 正しい例
vec[1:3] <- c(10, 20, 30) # 長さを一致させる
データフレームに新しい列を作成する際も注意が必要です。
新しい列の要素数は、データフレームの行数と一致する必要があります。
# エラーになる例
df <- data.frame(a = 1:5)
df$b <- c(10, 20) # 長さが一致しない
# 正しい例
df$b <- c(10, 20, 30, 40, 50)
10. パイプの後で実行が止まらない
問題の症状
コンソールに+記号が表示され続け、コードが終わらない。
原因
パイプ演算子(%>%)や+記号で行が終わっています。
R言語はまだ続きがあると判断しています。
解決方法
Escキーを押して実行を中断しましょう。
最後の行からパイプを削除してください。
# エラーになる例
df %>%
select(var1, var2) %>%
filter(var1 > 10) %>% # この最後のパイプが問題
# 正しい例
df %>%
select(var1, var2) %>%
filter(var1 > 10) # 最後のパイプを削除
ggplot2でも同様の問題が起きます。
# 最後の + を削除
ggplot(data, aes(x = var1, y = var2)) +
geom_point() # ここで終わる(+をつけない)
エラーが発生した時の対処手順
エラーに遭遇したら、以下の手順で対処しましょう。
ステップ1:エラーメッセージをよく読む
エラーメッセージには問題の場所や原因のヒントが含まれています。
どの関数でエラーが起きたのか確認しましょう。
ステップ2:エラーが起きた行を確認
エラーメッセージに表示された行番号を見て、該当箇所を確認します。
RStudioはエラーが起きた箇所を赤い×印で示してくれます。
ステップ3:コードを分解して実行
長いコードの場合、一行ずつ実行してどこでエラーが起きるか特定しましょう。
# パイプで繋がっている場合、一つずつ実行
df %>%
select(var1, var2) # ここまで実行してOKか確認
ステップ4:変数の中身を確認
print()やstr()で変数の内容を確認しましょう。
str(data) # データ構造を確認
head(data) # 最初の数行を表示
class(data) # データ型を確認
ステップ5:Google検索
エラーメッセージを英語にして、「R」と一緒に検索しましょう。
Stack OverflowやRStudio Communityで同じ問題の解決策が見つかることが多いです。
デバッグに便利な関数

エラーの原因を特定するための便利な関数を紹介します。
traceback()
エラーがどこで発生したか、呼び出しスタックを確認できます。
# エラーが発生した直後に実行
traceback()
debug()
関数を一行ずつ実行して、問題箇所を特定できます。
debug(my_function)
my_function() # デバッグモードで実行
# 終了するには
undebug(my_function)
browser()
コードの途中にブレークポイントを設定できます。
my_function <- function(x) {
x <- x + 2
browser() # ここで一時停止
y <- x * x
return(y)
}
エラーを防ぐベストプラクティス
エラーを未然に防ぐための習慣を身につけましょう。
Rプロジェクトを使う
RStudioのプロジェクト機能を使うと、作業ディレクトリの問題が激減します。
File → New Project から作成しましょう。
コーディングスタイルを統一
読みやすいコードはエラーが少なくなります。
- インデント(字下げ)を適切に使う
- 変数名は分かりやすく(
x1よりstudent_age) - カンマの後にスペースを入れる
コメントを書く
後で見返した時に何をしているか分かるようにしましょう。
# データの読み込み
data <- read.csv("mydata.csv")
# 欠損値を除外
data_clean <- na.omit(data)
こまめに保存・実行
長いコードを一気に書かず、少しずつ書いては実行を繰り返しましょう。
Ctrl + Enter(MacはCmd + Enter)で選択した行を実行できます。
パッケージのバージョンに注意
古いバージョンのRやパッケージはエラーの原因になることがあります。
定期的に更新しましょう。
# パッケージの更新
update.packages()
try()とtryCatch()でエラーに対処
エラーが発生してもプログラムを止めたくない場合があります。
try()関数
エラーが発生しても実行を続けます。
# エラーが起きても次の処理に進む
for (i in 1:10) {
try({
# エラーが起きる可能性のある処理
result <- risky_function(i)
})
}
tryCatch()関数
エラーが起きた時に特定の処理を実行できます。
result <- tryCatch(
{
# 実行したい処理
risky_function(x)
},
error = function(e) {
# エラーが起きた時の処理
message("エラーが発生しました: ", e$message)
return(NA)
}
)
この方法は、大量のデータを処理する際に特に便利です。
まとめ:エラーは学習の機会
R言語のエラーは、最初は怖く感じるかもしれません。
でも、エラーメッセージは「何が問題か」を教えてくれる親切な先生なんです。
この記事で紹介した主なエラー
- オブジェクトが見つからない → スペルミスと変数の定義を確認
- 関数が見つからない → パッケージの読み込みを確認
- 予期しないシンボル → カンマと括弧をチェック
- 引数が使われていない → 関数のヘルプを確認
- 添え字が範囲外 → データのサイズを確認
- ファイルが開けない → 作業ディレクトリとパスを確認
- 非数値引数 → データ型を確認
- ベクトルの長さ不一致 → 長さを揃える
- パイプの問題 → 最後のパイプを削除
- デバッグ関数を活用
エラーに遭遇したら、慌てずに一つずつ確認していきましょう。
経験を積めば、エラーメッセージを見ただけで原因が分かるようになりますよ。
Google検索やStack Overflowも活用して、同じ問題で悩んだ人の解決策を参考にしてくださいね!

コメント