正しいコード
# 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)Data.csvという名の表形式データがあり、var1、var2、var3、var4、var5という列で構成されているとしよう。このデータを用いて以下のような処理を行うとする。
Data.csvを読み込みdfという名のオブジェクトとして格納する。dfからvar1、var3、var4列のみ残し、dfを上書きする。dfにsum_3_4という新しい列を追加し、その値はvar3とvar4の和とする。以上の処理を行うコードは以下の通りである(つまり、以下のコードが正解例)。
しかし、2番目のブロックで以下のような入力ミスがあったとしよう。
この場合、3番目のブロックは正しく実行されない。なぜなら、2ブロック目においてvar4とvar5列を除外したため、3ブロック目のコードを実行する時点でdfにvar4列がないからだ。ここで2ブロック目のコードを正しいコードへ修正したとしよう(var1, var2, var3をvar1, var3, var4に修正)。そして2ブロック目のコードを実行する。どうなるだろうか。
結果はエラーである。最初はうまく行ったものの、なぜか今回はエラーが出る。これはなぜだろうか。既に我々はdfからvar1、var2、var3列のみを抽出した。つまり、今のdfにはvar4とvar5列は存在しない。そこでvar1、var3、var4を抽出するコードを実行してもvar4列が存在しないからエラーが発生する。
対処法は簡単だ。dfをvar1、var2、var3、var4、var5が全て入っている状態に戻すことだ。したがって、以上の例だと、2ブロック目のコードを修正した場合は1ブロック目から改めて実行する必要がある。
以上の話を難しく感じる場合は、コードミスを修正した後はコードを1行目から再実行することをおすすめする。