gpt4 book ai didi

R:更改函数内的级别

转载 作者:行者123 更新时间:2023-12-04 04:42:48 25 4
gpt4 key购买 nike

我有一个 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

这样做的正确方法是什么?

最佳答案

您需要返回完整的对象 x而不仅仅是您的分配结果(即字符串 missing )。

changeLevel1 <- function(x){
levels(x)[which(levels(x) == 'a')] <- 'missing'
return (x)
}

关于R:更改函数内的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18641295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com