将函数应用于数据框的所有元素
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))
我正在尝试对数据框中的所有元素应用一些转换。
使用常规应用函数时,我得到的是矩阵而不是数据框。有没有一种方法可以直接获取数据帧而无需在每一行添加 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))