我想更改R数据框中的多个列的类,而不是逐个执行,或使用for
循环(并注意this答案)。我可以使用这些方法中的任何一种来做,但是他们感觉很笨拙。请注意,我不一定要更改每一列。
E.g。我有数据框mydf
:
mydf <- data.frame("col1" = c(1, 2, 3),
"col2" = c("a", "b", "c"),
"col3" = c("a", "a", "b"), stringsAsFactors = FALSE)
我想将第二列和第三列更改为类因子。 (实际上我想要处理超过两列......)
我可以用我最喜欢的方式逐列完成,例如:
mydf$col2 <- as.factor(mydf$col2)
mydf[, 3] <- as.factor(mydf[,3])
或者我可以使用for循环:
for (i in 2:3{
mydf[,i] <- as.factor(mydf[,i])
}
这些工作,但感觉笨重且次优。
更好的想法?
答案 0 :(得分:3)
好的,我在写这个问题时已经解决了问题,但是想想它可能会在将来对任何人使用的情况下上去:
mydf[,2:3] <- lapply(mydf[,2:3], as.factor)