r语言 - 将函数应用于数据框的某些列,同时将结果存储在原始数据框中



我有一个数据框,我想在其中将一些列呈现为因子(目前它们是数字(。

例如:

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)

最新更新