在没有for循环的情况下更改数据框中多列的类

时间:2016-02-16 08:02:15

标签: r dataframe

我想更改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])
 }

这些工作,但感觉笨重且次优。

更好的想法?

1 个答案:

答案 0 :(得分:3)

好的,我在写这个问题时已经解决了问题,但是想想它可能会在将来对任何人使用的情况下上去:

mydf[,2:3] <- lapply(mydf[,2:3], as.factor)