我正在尝试将一些转换应用于数据框中的所有元素。
使用常规应用函数时,我得到一个矩阵,而不是数据帧。有没有办法直接获取数据帧而不向每一行添加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"?
答案 0 :(得分:20)
我们可以使用lapply
并将其分配给' df'
df[] <- lapply(df, tolower)
[]
保留与原始数据集相同的结构。使用apply
将其转换为matrix
,不建议这样做。
答案 1 :(得分:9)
这是使用dplyr
的方式:
library(dplyr)
df %>% mutate_each(funs(tolower))