将一个函数应用于数据框中的所有元素。

16

我想对数据框中的所有元素应用一些转换。

使用普通的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个回答

20
我们可以使用 lapply 并将其赋值回'df'。
df[] <- lapply(df, tolower)

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


8
这是使用 dplyr 的一种方法:
library(dplyr)
df  %>% mutate_each(funs(tolower))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接