我正在尝试将几个因子列的级别设置为以下值“否”和“是”。 我使用以下代码,但它不起作用
binaryCol <- c(5:10, 15:19, 21:26, 30:32) # position of the columns for which I want to change the factors
for( i in binaryCol) {levels(df[,i])<- c("No","Yes")}
任何帮助将不胜感激
答案 0 :(得分:1)
您的代码可以通过一个简单的示例正常运行:
binaryCol <- c(1,3)
df <- data.frame(Var1=factor(1:0), Var2=1:2, Var3=factor(0:1))
# Var1 Var2 Var3
#1 1 1 0
#2 0 2 1
for(i in binaryCol) { levels(df[,i]) <- c("No","Yes") }
df
# Var1 Var2 Var3
#1 Yes 1 No
#2 No 2 Yes
或者,使用lapply
将函数应用于所选的factor
列:
df[binaryCol] <- lapply(df[binaryCol], function(x) {levels(x) <- c("No","Yes"); x })
df
# Var1 Var2 Var3
#1 Yes 1 No
#2 No 2 Yes
或者如果你想变得棘手:
df[binaryCol] <- lapply(df[binaryCol], `levels<-`, c("No","Yes") )