Rでデータフレームの日本語を0, 1に置き換える関数を自作した時のトラブル
よろしくお願いします。
のようなデータフレームの「あり」、「なし」を1, 0 に変更しようと思って以下のような自作の関数を書きましたが、もとのデータフレームに変更が反映されておらず、要素は「あり」、「なし」のままでした。
nihongosayonara <- function(df) {
for(i in 1:length(names(df))){
df[i][df[i] == "あり"] <- 1
df[i][df[i] == "なし"] <- 0}}
この際特にエラーやWarningは出ませんでした。
関数内部の終わりにprint()で列を見てみると変更されているようです。
手作業で
df[1][df[1] == "あり"] <- 1
df[1][df[1] == "なし"] <- 0
のようにするときちんと変更されているのですが、この振る舞いの違いは何なのでしょうか。