この授業の「あるある」

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

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

データが読み込めない

  • 99.999%の確率でパスの指定が間違っている(スペルミスを含む)。
  • ファイルシステムの理解がない場合は、プロジェクト機能を使おう。
    • というか、必ずプロジェクト機能を使おう。ファイルシステムを理解している宋でもプロジェクト機能は常に使用している。

エラーが出た!

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

コードの実行順番

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

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

 以上の処理を行うコードは以下の通りである(つまり、以下のコードが正解例)。

正しいコード
# Block 1
df <- read_csv("Data.csv")

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

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

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

間違ったコード
# Block 1
df <- read_csv("Data.csv")

# Block 2(var4がvar3になっている)
df <- df %>%
  select(var1, var2, var3)

# Block 3
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ブロック目から改めて実行する必要がある。

 以上の話を難しく感じる場合は、コードミスを修正した後はコードを1行目から再実行することをおすすめする。