2016-10-27 11 views
5

データフレーム内のすべての要素にいくつかの変換を適用しようとしています。データフレームのすべての要素に関数を適用する

通常の適用関数を使用すると、データフレームではなく行列が返されます。各ラインに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"? 

答えて

11

我々はlapplyを使用することができますし、バック 'DF'

df[] <- lapply(df, tolower) 

[]は、元のデータセットと同じ構造を維持するに割り当てます。 applyを使用すると、matrixに変換されますが、これはお勧めできません。ここで

3

dplyrを使用しての方法です:

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