将函数应用于数据框的所有元素

时间:2016-10-27 07:40:33

标签: r dataframe apply

我正在尝试将一些转换应用于数据框中的所有元素。

使用常规应用函数时,我得到一个矩阵,而不是数据帧。有没有办法直接获取数据帧而不向每一行添加as.data.frame

df = data.frame(a = LETTERS[1:5], b = LETTERS[6:10])

apply(df, 1, tolower) #Matrix
apply(df, 2, tolower) #Matrix
sapply(df, tolower)   #Matrix

as.data.frame(sapply(df, tolower)) # Can I avoid "as.data.frame"?

2 个答案:

答案 0 :(得分:20)

我们可以使用lapply并将其分配给' df'

df[] <- lapply(df, tolower)

[]保留与原始数据集相同的结构。使用apply将其转换为matrix,不建议这样做。

答案 1 :(得分:9)

这是使用dplyr的方式:

library(dplyr)
df  %>% mutate_each(funs(tolower))