Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数更改R中因子变量的级别_R_Categorical Data_Levels - Fatal编程技术网

函数更改R中因子变量的级别

函数更改R中因子变量的级别,r,categorical-data,levels,R,Categorical Data,Levels,我在数据框oldata中有一个带系数的变量Clic_1。我想写一个函数,它将改变因子变量的值 head(oldata$CliC_1) [1] 4 1 5 3 5 5 Levels: 1 2 3 4 5 我尝试了这个函数,但它给出了NA try<- function (data,var){ for (i in 1:nrow(data)){ if (var[i]== "1"){ var[i]<- "Good"

我在数据框
oldata
中有一个带系数的变量
Clic_1
。我想写一个函数,它将改变因子变量的值

head(oldata$CliC_1)
[1] 4 1 5 3 5 5
Levels: 1 2 3 4 5
我尝试了这个函数,但它给出了NA

try<- function (data,var){
    for (i in 1:nrow(data)){
            if (var[i]== "1"){
                    var[i]<- "Good"
            } else {var[i]<- "Bad"}        
    }
    return (var)
}

try您不需要自定义函数或
relevel
。只需使用
ifelse

factor(ifelse(oldata$CliC_1==1, 'Good', 'Bad'))
# Bad  Good Bad  Bad  Bad  Bad 
另一种方法是

factor(oldata$CliC_1 != 1, labels = c('Good', 'Bad'))
# [1] Bad  Good Bad  Bad  Bad  Bad 
# Levels: Good Bad

非常感谢。但是,我也想知道我在这个函数中犯了什么错误?你有什么线索吗?而且,如果我有两个以上的级别,例如“good”、“mediate”、“bad”,那么你的函数对我来说运行良好。只需将它包装到
factor
中,如
return(factor(var))
并调用其他名称,因为
try
在R中已经存在函数。除此之外,您的函数没有矢量化,因此最好使用其他方法。如果您需要其他级别,它将变得比简单的布尔条件更复杂。