我有一个数据框,其中包含许多(但不是全部)列,我想将它们转换为有序因子。
我的模拟数据:
df <- structure(list(var1 = c("level1", "level1", "level2", "level3", "level1", "level4", "level4"),
var2 = c("level3", "level1", "level2", "level4", "level1", "level4", "level3"),
var3 = c("level4", "level3", "level1", "level2", "level4", "level3", "level1")),
.Names = c("var1", "var2", "var3"),
row.names = c(NA, 7L),
class = "data.frame")
要更改的列向量定义如下:
ToFactors <- c("var1", "var2")
我尝试了以下操作:
df[ToFactors] <- factor(df[ToFactors], ordered = TRUE,
levels = c("level1", "level2", "level3", "level4"))
但是,这会将所有单元格变成NA
。我在做什么错了?
答案 0 :(得分:0)
使用lapply的简单解决方案
df[, ToFactors] <- lapply(df[, ToFactors], factor, ordered = T, levels = c("level1", "level2", "level3", "level4"))
回答更新,谢谢@Pratik。