我有一个数据框,我想在其中将一些列呈现为因子(目前它们是数字(。
例如:
dd = data_frame( x = c(0, 0, 0, 1, 1, 1), y = c(1,2,3,4,5,6))
我只想使第一列成为一个因素:
lapply(dd[,1], as.factor)
但结果是一个(因子(列表,并且不会保存回原始数据框。
有没有办法实现这一目标?
我们可以使用
library(dplyr)
dd <- dd %>%
mutate(x = factor(x))
或用于多列
nm1 <- names(dd)[1:2]
dd <- dd %>%
mutate_at(vars(nm1), factor)
在OP的代码中,问题是它正在循环将第一列元素循环到list
中。 相反,我们只需要
dd[,1] <- factor(dd[,1])
或
dd[[1]] <- factor(dd[[1]])
注意:对于单列,我们不需要任何lapply
如果我们想应用于多列
dd[nm1] <- lapply(dd[nm1], factor)