R:更改函数内部的级别
我有一个data.frame,我想更改一个因子变量的级别,所以我这样做:R:更改函数内部的级别,r,function,R,Function,我有一个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')] <- 'mis
> 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
>df1头(df1)
id事实1
11A
2 b
3 c
4d
5 e
>级别(df1$fact1)[其中(级别(df1$fact1)='a')]df1
id事实1
1 1失踪
2 b
3 c
4d
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
changeLevel1您需要返回完整的对象x
,而不仅仅是赋值的结果(即缺少的字符串)
changeLevel1
changeLevel1 <- function(x){
levels(x)[which(levels(x) == 'a')] <- 'missing'
return (x)
}