Lapply vs sapply w r: jaka jest różnica?
Funkcji lapply() w R można użyć do zastosowania funkcji do każdego elementu listy, wektora lub ramki danych i uzyskania odpowiedniej listy .
Funkcji sapply() można także użyć do zastosowania funkcji do każdego elementu listy, wektora lub ramki danych, ale w rezultacie zwraca ona wektor .
Poniższe przykłady pokazują, jak używać każdej z tych funkcji w języku R.
Przykład: Jak używać Apply() w R
Poniższy kod pokazuje, jak używać funkcji lapply() do pomnożenia każdej wartości w każdej kolumnie ramki danych przez 2:
#create data frame df <- data. frame (x=c(1, 2, 2, 3, 5), y=c(4, 4, 6, 7, 8), z=c(7, 7, 9, 9, 9)) #view data frame df X Y Z 1 1 4 7 2 2 4 7 3 2 6 9 4 3 7 9 5 5 8 9 #multiply each value in each column by 2 lapply(df, function (df) df*2) $x [1] 2 4 4 6 10 $y [1] 8 8 12 14 16 $z [1] 14 14 18 18 18
Pamiętaj, że wynikiem jest lista.
Przykład: Jak używać sapply() w R
Poniższy kod pokazuje, jak używać funkcji sapply() do pomnożenia każdej wartości w każdej kolumnie ramki danych przez 2:
#create data frame df <- data. frame (x=c(1, 2, 2, 3, 5), y=c(4, 4, 6, 7, 8), z=c(7, 7, 9, 9, 9)) #view data frame df X Y Z 1 1 4 7 2 2 4 7 3 2 6 9 4 3 7 9 5 5 8 9 #multiply each value in each column by 2 sapply(df, function (df) df*2) X Y Z [1,] 2 8 14 [2,] 4 8 14 [3,] 4 12 18 [4,] 6 14 18 [5,] 10 16 18
Należy pamiętać, że wynikiem jest macierz wektorowa.
Pamiętaj, że możesz użyć funkcji as.data.frame() do zwrócenia ramki danych zamiast macierzy:
#multiply each value in each column by 2 and return a data frame as. data . frame (sapply(df, function (df) df*2)) X Y Z 1 2 8 14 2 4 8 14 3 4 12 18 4 6 14 18 5 10 16 18
Kiedy używać lapply() lub sapply()
W 99% przypadków użyjesz sapply() , ponieważ bardziej sensowne jest zwrócenie wektora lub macierzy.
Jednak w rzadkich przypadkach może być konieczne użycie funkcji lapply(), jeśli chcesz, aby wynikiem była lista.
Zauważ, że sapply() i lappy() wykonują te same operacje na wektorze, macierzy lub ramce danych. Jedyna różnica dotyczy klasy zwracanego obiektu.
Dodatkowe zasoby
Jak zastosować funkcję do każdego wiersza ramki danych w R
Jak korzystać z funkcji colSums() w R
Jak korzystać z funkcji rowSums() w R