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

Apply a function to all the elements of a data frame

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

使用常规应用函数时,我得到的是矩阵而不是数据框。有没有一种方法可以直接获取数据帧而无需在每一行添加 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"?

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

df[] <- lapply(df, tolower)

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

这是使用 dplyr 的方法:

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