この授業の「あるある」

タイピングの速度について

  • ブラインドタッチ(キーボードを見ないでタイピングすること)は必須
    • 教員の画面、スライド、資料などを見ながらタイピングすることになるため、キーボードを見る暇はない
  • 1分当たり150文字以上(英字)入力できること

データが読み込めない

エラーが出た!

  • エラーメッセージは読む。メッセージを読んで、その原因を特定しよう。
    • 何も考えずに教員やTAを呼ぶと、独学する時に同じエラーが出ても解決できなくなる。
  • スペルミス
    • 最もよくあるミス。
    • 大文字と小文字の区分は厳格(Rに限らず全てのプログラミング言語共通)
    • フォントサイズを大きくすると、スペルミスを発見しやすくなる。
  • カッコ、コンマ忘れ
    • カッコは開けたら必ず閉じる。

コードの実行順番

Data.csvという名の表形式データがあり、var1var2var3var4var5という列で構成されているとしよう。このデータを用いて以下のような処理を行うとする。

  1. Data.csvを読み込みdfという名のオブジェクトとして格納する。
  2. dfからvar1var3var4列のみ残し、dfを上書きする。
  3. dfsum_3_4という新しい列を追加し、その値はvar3var4の和とする。

以上の処理を行うコードは以下の通りである。

df <- read_csv("Data.csv")

df <- df %>%
  select(var1, var3, var4)

df <- df %>%
  mutate(sum_3_4 = var3 + var4)

しかし、2番目のブロックで以下のような入力ミスがあったとしよう。

df <- read_csv("Data.csv")

df <- df %>%
  select(var1, var2, var3) #< ここが間違っている。

df <- df %>%
  mutate(sum_3_4 = var3 + var4)

この場合、3番目のブロックは正しく実行されない。なぜなら、2ブロック目においてvar4var5列を除外したため、3ブロック目のコードを実行する時点でdfvar4列がないからだ。ここで2ブロック目のコードを正しいコードへ修正したとしよう(var1, var2, var3var1, var3, var4に修正)。そして2ブロック目のコードをを実行する。どうなるだろうか。

結果はエラーである。最初はうまく行ったものの、なぜか今回はエラーが出る。これはなぜだろうか。既に我々はdfからvar1var2var3列のみを抽出した。つまり、今のdfにはvar4var5列は存在しない。そこでvar1var3var4を抽出するコードを実行してもvar4列が存在しないからエラーが発生する。

対処法は簡単だ。dfvar1var2var3var4var5が全て入っている状態に戻すことだ。したがって、以上の例だと、2ブロック目のコードを修正した場合は1ブロック目から改めて実行する必要がある。