よろしくお願いします。

Rで  
[![画像の説明をここに入力](https://i.stack.imgur.com/FSP0P.png)](https://i.stack.imgur.com/FSP0P.png)

のようなデータフレームの「あり」、「なし」を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
    
```

のようにするときちんと変更されているのですが、この振る舞いの違いは何なのでしょうか。
CC BY-SA 3.0
2018-01-14T01:20:00.640
40940
2018-01-14T01:35:40.253
2018-01-14T01:35:40.253
26993
26993
question
r
Rでデータフレームの日本語を0, 1に置き換える関数を自作した時のトラブル