将功能应用于数据框的某些列,同时将结果存储在原始数据框中

时间:2019-03-28 08:53:00

标签: r dataframe apply

我有一个数据框,在这里我想将某些列作为因子渲染(目前它们是数字)。

例如:

dd = data_frame( x = c(0, 0, 0, 1, 1, 1), y = c(1,2,3,4,5,6))

我只想把第一列作为一个因素:

lapply(dd[,1], as.factor)

但是结果是一个列表(有一个因子),并且不会保存回原始数据框中。

有没有办法做到这一点?

1 个答案:

答案 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)