我有一个数据框,在这里我想将某些列作为因子渲染(目前它们是数字)。
例如:
dd = data_frame( x = c(0, 0, 0, 1, 1, 1), y = c(1,2,3,4,5,6))
我只想把第一列作为一个因素:
lapply(dd[,1], as.factor)
但是结果是一个列表(有一个因子),并且不会保存回原始数据框中。
有没有办法做到这一点?
答案 0 :(得分:2)
我们可以使用
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)