data.frame があり、因子変数のレベルを変更したいので、次のようにします。
> df1 <- data.frame(id = 1:5, fact1 = factor(letters[1:5]))
> head(df1)
id fact1
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
> levels(df1$fact1)[which(levels(df1$fact1) == 'a')] <- 'missing'
> df1
id fact1
1 1 missing
2 2 b
3 3 c
4 4 d
5 5 e
しかし、関数内でこれを行おうとすると、すべてが新しい値に変わります。
changeLevel1 <- function(x){
levels(x)[which(levels(x) == 'a')] <- 'missing'
}
df1$fact1 <- changeLevel1(df1$fact1)
> df1
id fact1
1 1 missing
2 2 missing
3 3 missing
4 4 missing
5 5 missing
これを行う正しい方法は何ですか?