在 R 中一次编辑多个列的级别

Edit the levels of several columns at once in R

我正在尝试将几个因子列的水平设置为以下值 "No" 和 "Yes"。 我使用以下代码但它不起作用

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")}

如有任何帮助,我们将不胜感激

您的代码通过一个简单的示例就可以正常工作:

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") )