放送大学の授業で、Rの復習をしていました。昨日より少しわかってきた感覚があり、オンライン授業を何度も見返しながら、RStudioでクロス集計の確認をしていました。
ところが、途中で次のようなエラーが出ました。
Error: object 'b01' not found
最初は、「あれ、データが消えたのかな?」と思いました。
でも、原因はとてもシンプルでした。
Rでは、大文字と小文字が区別される。
たったこれだけのことでした。
🔰 RStudioで復習していた内容
この日、私が確認していたのは、Rのクロス集計です。
使っていたデータは、B01 という名前のデータでした。
RStudioの右上にあるEnvironmentにも、きちんと B01 と表示されています。
そして、次のようなコードを使って、1列目と2列目の関係を集計していました。
table(B01[,1:2]) %>%
prop.table() %>%
addmargins()
このコードは、簡単に言うと次のような流れです。
table()で集計表を作るprop.table()で割合にするaddmargins()で合計行・合計列を追加する
授業で見た内容を、もう一度自分の手で確認していました。
オンライン授業は便利です。
一度で理解できなくても、止めたり、戻したり、何度も見返したりできます。
昨日はよくわからなかった部分も、今日もう一度見てみると、「あ、これはこういう意味だったのか」と少しずつ見えてきます。
⚠️ 出てきたエラー:「object ‘b01’ not found」
ところが、途中でこのようなエラーが出ました。
Error: object 'b01' not found
日本語にすると、
「b01 というオブジェクトは見つかりません」
という意味です。
初心者の私は、一瞬あせりました。
「さっきまで使えていたのに」
「データが読み込まれていないのかな」
「どこかで消してしまったのかな」
そんなふうに考えてしまいます。
でも、RStudioのEnvironmentを見ると、データはちゃんと存在していました。
そこに表示されていた名前は、b01 ではなく、B01 でした。
💡 原因は「B01」と「b01」の違い
今回の原因は、データ名の大文字と小文字の違いでした。
B01
b01
人間の目で見ると、ほとんど同じに見えます。
でも、Rにとってはこの2つは別物です。
B01 と b01 は、まったく別の名前として扱われます。
つまり、Environmentに B01 というデータがあっても、コンソールに b01 と入力すると、Rはこう判断します。
「b01 という名前のデータはありません」
その結果、次のエラーが出ます。
Error: object 'b01' not found
正しくは、次のように大文字で入力する必要がありました。
table(B01[,1:2]) %>%
prop.table() %>%
addmargins()
📌 Rでは大文字と小文字を区別する
今回の失敗で、Rの大事な基本をひとつ覚えました。
Rでは、大文字と小文字を区別します。
たとえば、次のような名前はすべて別物です。
data
Data
DATA
人間なら、「同じような名前」と感じるかもしれません。
でも、Rは正確に区別します。
これは、最初は少し面倒に感じます。
でも、プログラミングではとても大切な考え方です。
コンピュータは、こちらの気持ちを推測してはくれません。
「たぶんこれのことだろう」とは考えてくれないのです。
だからこそ、名前を正確に書く必要があります。
🧠 この間違いは、初心者にとって役に立つ
今回の間違いは、小さなミスです。
でも、私はとても役に立つ間違いだったと思っています。
なぜなら、Rを学び始めた人がつまずきやすいポイントだからです。
エラーが出ると、初心者は「自分には向いていないのかもしれない」と思ってしまうことがあります。
でも、実際には、原因はとても小さなことだったりします。
今回もそうでした。
統計の考え方がわからなかったわけではありません。
Rの仕組み全体を理解していなかったわけでもありません。
ただ、B01 を b01 と入力していただけです。
それでもRは止まります。
だからこそ、初心者のうちは、エラーが出たときに次のように考えるとよいと思いました。
- データ名は合っているか
- 大文字と小文字は合っているか
- Environmentに表示されている名前と同じか
- スペルミスはないか
- 全角文字や余分な空白が入っていないか
難しい原因を考える前に、まずは名前を確認する。
これだけでも、かなり落ち着いて対応できるようになりそうです。
📊 今日確認したクロス集計の内容
今回の復習では、クロス集計も確認しました。
たとえば、study と result の関係を見る表です。
結果は、次のような形になっていました。
result
study 不合格 合格 Sum
勉強した 0.250 0.500 0.750
勉強しなかった 0.125 0.125 0.250
Sum 0.375 0.625 1.000
これは、全体を1として見たときの割合です。
たとえば、
- 勉強して合格した人は 0.500、つまり50%
- 勉強して不合格だった人は 0.250、つまり25%
- 勉強しなかったけれど合格した人は 0.125、つまり12.5%
- 勉強しなくて不合格だった人は 0.125、つまり12.5%
という意味になります。
最初は数字が並んでいるだけに見えました。
でも、ゆっくり見ていくと、表の意味が少しずつわかってきました。
Rは、ただ計算するだけではなく、データの関係を見やすくしてくれる道具なのだと感じました。
🌱 昨日より少しわかる。それで十分
今日は疲れていたので、新しいところにはあまり進まず、昨日の復習を中心にしました。
でも、それでよかったと思います。
昨日はよくわからなかったコードも、今日もう一度見ると、少しだけ意味が見えてきました。
table() は集計表を作る。
prop.table() は割合にする。
addmargins() は合計を追加する。
そして、Rでは B01 と b01 は別物。
今日の学びは、このくらいです。
でも、初心者にとっては十分大きな一歩だと思います。
プログラミングやデータ分析の学習は、一気に理解するものではないのかもしれません。
見て、動かして、間違えて、直して、もう一度見る。
その繰り返しで、少しずつ体に入っていくのだと思います。
✅ まとめ:Rの「object not found」は、まず名前を確認する
今回のエラーから学んだことをまとめます。
- Rでは大文字と小文字を区別する
B01とb01は別物object not foundは「その名前のデータが見つからない」という意味- エラーが出たら、まずEnvironmentの名前を確認する
- 小さな間違いも、初心者にとっては大事な学びになる
RStudioの画面でエラーが出ると、最初は不安になります。
でも、今回のように原因をひとつずつ確認していくと、少しずつ対応できるようになります。
昨日より少しわかる。
今日はそれだけで十分です。
これからも、放送大学でのR学習を少しずつ記録していきたいと思います。
💻 これからRやプログラミングを学ぶ方へ
Rやプログラミングを学び始めると、最初は小さなエラーで何度も止まります。
でも、それは失敗ではなく、コンピュータとのやり取りに慣れていく過程なのだと思います。
私自身も、まだ学習の途中です。
だからこそ、初心者がどこでつまずくのか、どんなところで不安になるのかを、実感を持って書けます。
これから学ぶ方には、完璧を目指すよりも、まずは「昨日より少しわかる」を大切にしてほしいです。
RStudioでエラーが出ても、あわてなくて大丈夫です。
まずは、データ名を確認する。
大文字と小文字を確認する。
そこからで十分です。
