在 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") )
我正在尝试将几个因子列的水平设置为以下值 "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") )