web-dev-qa-db-ja.com

データフレームのすべての要素に関数を適用する

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

通常の適用関数を使用すると、データフレームではなくマトリックスが返されます。 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"?
14
Deena

lapplyを使用して 'df'に割り当てることができます

df[] <- lapply(df, tolower)

[]は、元のデータセットと同じ構造を保持します。 applyを使用してmatrixに変換しますが、これは推奨されません。

20
akrun

dplyrを使用する方法は次のとおりです。

library(dplyr)
df  %>% mutate_each(funs(tolower))
8
Tim Goodman