2016-10-27 23 views
5

Próbuję zastosować transformacje do wszystkich elementów w ramce danych.Stosowanie funkcji do wszystkich elementów ramki danych

Podczas korzystania ze zwykłych funkcji stosujących, otrzymuję matrycę, a nie ramkę danych. Czy istnieje sposób, aby uzyskać ramkę danych bezpośrednio, bez dodawania as.data.frame do każdej linii?

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"? 

Odpowiedz

11

Możemy użyć lapply i przypisać go do 'df'

df[] <- lapply(df, tolower) 

[] zachowuje taką samą strukturę jak w oryginalnym zestawie danych. Użycie przekształcenia apply do wersji matrix nie jest zalecane.

3

Oto sposób korzystania dplyr:

library(dplyr) 
df %>% mutate_each(funs(tolower)) 
Powiązane problemy