Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

apply(), lapply(), sapply(), tapply() Function in R with Examples

By admin on 19 lutego, 2021

Tutorial ten ma na celu przybliżenie zbioru funkcji apply(). Funkcja apply() jest najbardziej podstawową ze wszystkich kolekcji. Poznamy również funkcje sapply(), lapply() oraz tapply(). Kolekcję apply można traktować jako zamiennik pętli.

Kolekcja apply() jest dołączona do pakietu r essential, jeśli instalujesz R z Anacondą. Funkcja apply() może być zasilana wieloma funkcjami w celu wykonania nadmiarowej aplikacji na kolekcji obiektów (ramka danych, lista, wektor, itp.). Celem funkcji apply() jest przede wszystkim uniknięcie jawnego użycia konstrukcji pętli. Można je zastosować do wejściowej listy, macierzy lub tablicy i zastosować funkcję. Dowolna funkcja może być przekazana do apply().

W tym tutorialu, nauczysz się

  • funkcji apply()
  • funkcji lapply( )
  • funkcji sapply()
  • funkcji slice vector
  • funkcji tapply()
  • funkcji sapply() tapply() function

funkcja apply() function

apply() przyjmuje ramkę danych lub macierz jako dane wejściowe i podaje dane wyjściowe w postaci wektora, listę lub tablicę. Funkcja apply() jest używana głównie w celu uniknięcia jawnego użycia konstrukcji pętli. Jest to najbardziej podstawowa z wszystkich kolekcji, która może być użyta nad macierzą.

Funkcja przyjmuje 3 argumenty:

apply(X, MARGIN, FUN)Here:-x: an array or matrix-MARGIN: take a value or range between 1 and 2 to define where to apply the function:-MARGIN=1`: the manipulation is performed on rows-MARGIN=2`: the manipulation is performed on columns-MARGIN=c(1,2)` the manipulation is performed on rows and columns-FUN: tells which function to apply. Built functions like mean, median, sum, min, max and even user-defined functions can be applied>

Najprostszym przykładem jest sumowanie matrioszki po wszystkich kolumnach. Kod apply(m1, 2, suma) zastosuje funkcję suma do macierzy 5×6 i zwróci sumę każdej kolumny dostępnej w zbiorze danych.

m1 <- matrix(C<-(1:10),nrow=5, ncol=6)m1a_m1 <- apply(m1, 2, sum)a_m1

Wyjście:

Najlepsza praktyka: Przechowuj wartości przed wydrukowaniem go do konsoli.

funkcja lapply()

funkcja lapply() jest przydatna do wykonywania operacji na obiektach listy i zwraca obiekt listy o tej samej długości co oryginalny zbiór. lappy() zwraca listę o podobnej długości jak wejściowy obiekt listy, której każdy element jest wynikiem zastosowania FUN do odpowiedniego elementu listy. lapply() przyjmuje listę, wektor lub ramkę danych jako dane wejściowe i podaje dane wyjściowe w postaci listy.

lapply(X, FUN)Arguments:-X: A vector or an object-FUN: Function applied to each element of x

l w lapply() oznacza listę. Różnica pomiędzy lapply() a apply() leży pomiędzy zwracanym wyjściem. Wyjściem funkcji lapply() jest lista. lapply() może być używane do innych obiektów, takich jak ramki danych i listy.

funkcja lapply() nie potrzebuje MARGIN.

Bardzo prostym przykładem może być zmiana wartości łańcucha w macierzy na małe litery za pomocą funkcji tolower. Konstruujemy macierz z nazwami znanych filmów. Nazwa jest zapisana dużymi literami.

movies <- c("SPYDERMAN","BATMAN","VERTIGO","CHINATOWN")movies_lower <-lapply(movies, tolower)str(movies_lower)

Wyjście:

## List of 4## $:chr"spyderman"## $:chr"batman"## $:chr"vertigo"## $:chr"chinatown"

Możemy użyć funkcji unlist(), aby przekształcić listę w wektor.

movies_lower <-unlist(lapply(movies,tolower))str(movies_lower)

Wyjście:

## chr "spyderman" "batman" "vertigo" "chinatown"

funkcja sapply()

Funkcja sapply() przyjmuje jako dane wejściowe listę, wektor lub ramkę danych i daje dane wyjściowe w postaci wektora lub macierzy. Jest ona przydatna do operacji na obiektach listy i zwraca obiekt listy o tej samej długości co oryginalny zestaw. Funkcja sapply() wykonuje to samo zadanie co funkcja lapply(), ale zwraca wektor.

sapply(X, FUN)Arguments:-X: A vector or an object-FUN: Function applied to each element of x

Możemy zmierzyć minimalną prędkość i drogę zatrzymania samochodów z zestawu danych cars.

dt <- carslmn_cars <- lapply(dt, min)smn_cars <- sapply(dt, min)lmn_cars

Wyjście:

## $speed## 4## $dist## 2
smn_cars

Output:

## speed dist ## 4 2
lmxcars <- lapply(dt, max)smxcars <- sapply(dt, max)lmxcars

Wykonawca:

## $speed## 25## $dist## 120
smxcars

Wyjście:

## speed dist ## 25 120

Możemy użyć funkcji wbudowanej przez użytkownika w lapply() lub sapply(). Tworzymy funkcję o nazwie avg, aby obliczyć średnią z minimum i maksimum wektora.

avg <- function(x) { ( min(x) + max(x) ) / 2}fcars <- sapply(dt, avg)fcars

Wyjście

## speed dist## 14.5 61.0

Funkcja sapply() jest bardziej wydajna niż lapply() w zwracanych danych wyjściowych, ponieważ sapply() przechowuje wartości bezpośrednio w wektorze. W następnym przykładzie zobaczymy, że nie zawsze tak jest.

Różnice pomiędzy apply(), sapply() i `lapply() możemy podsumować w poniższej tabeli:

Funkcja

Argumenty

Cel.

Wejście

Wyjście

zastosuj

zastosuj(x, MARGIN, FUN)

Zastosuj funkcję do wierszy lub kolumn lub obu

Ramka danych lub macierz

wektor, lista, tablica

apply

lapply(X, FUN)

Zastosuj funkcję do wszystkich elementów danych wejściowych

List, wektor lub ramka danych

list

sappy

sappy(X FUN)

Zastosuj funkcję do wszystkich elementów danych wejściowych

List, wektor lub ramka danych

wektor lub macierz

Pokrój wektor

Możemy używać zamiennie lapply() lub sapply() do pokrojenia ramki danych. Tworzymy funkcję below_average(), która pobiera wektor wartości liczbowych i zwraca wektor, który zawiera tylko te wartości, które są ściśle powyżej średniej. Porównujemy oba wyniki z funkcją identical().

below_ave <- function(x) { ave <- mean(x) return(x)}dt_s<- sapply(dt, below_ave)dt_l<- lapply(dt, below_ave)identical(dt_s, dt_l)

Wyjście:

## TRUE

funkcja tapply()

tapply() oblicza miarę (średnią, medianę, min, max, itd…) lub funkcję dla każdej zmiennej czynnikowej w wektorze. Jest to bardzo przydatna funkcja, która pozwala na stworzenie podzbioru wektora, a następnie zastosowanie pewnych funkcji do każdego z tych podzbiorów.

Częścią pracy naukowca danych lub badaczy jest obliczanie podsumowań zmiennych. Na przykład zmierzyć średnią lub pogrupować dane na podstawie cechy. Większość danych jest pogrupowana według ID, miasta, krajów i tak dalej. Podsumowanie nad grupą ujawnia więcej interesujących wzorców.

Aby zrozumieć, jak to działa, użyjmy zestawu danych tęczówki. Ten zbiór danych jest bardzo znany w świecie uczenia maszynowego. Celem tego zbioru danych jest przewidzenie klasy każdego z trzech gatunków kwiatów: Sepal, Versicolor, Virginica. Zestaw danych zbiera dla każdego gatunku informacje o ich długości i szerokości.

Jako wstęp do pracy, możemy obliczyć medianę długości dla każdego gatunku. tapply() jest szybkim sposobem na wykonanie tego obliczenia.

data(iris)tapply(iris$Sepal.Width, iris$Species, median)

Output:

## setosa versicolor virginica ## 3.4 2.8 3.0

Zobacz wpisy

Dział 29
Dlaczego otwarcie Burger King w Indiach jest taka duża rzecz?

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Najnowsze wpisy

  • Firebush (Polski)
  • Prognoza stawek CD na 2021 rok: Stopy procentowe prawdopodobnie pozostaną na niskim poziomie, ale mogą wzrosnąć w dalszej części roku
  • Jak ustrukturyzować dokumentację systemu zarządzania jakością
  • Zdrowe Gry i Zajęcia dla Dzieci | UIC Online Informatics
  • Wheat Ales (American) (Polski)
  • Korzyści z karmienia piersią po roku
  • Czy bezpiecznie jest wrzucać fusy z kawy do zlewu | Atomic Plumbing
  • Cool-Down After Your Workout (Polski)
  • Nasza praca
  • Najlepsza ręczna maszyna do szycia do kupienia: 2020

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • WordPress.org

Archiwa

  • Marzec 2021
  • Luty 2021
  • Styczeń 2021
  • Grudzień 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com