Apply (), lapply (), sapply (), tapply () Funktion in R mit Beispielen

Inhaltsverzeichnis:

Anonim

Dieses Tutorial zielt darauf ab, die Funktionssammlung apply () einzuführen. Die Funktion apply () ist die grundlegendste aller Auflistungen. Wir werden auch sapply (), lapply () und tapply () lernen. Die Apply-Sammlung kann als Ersatz für die Schleife angesehen werden.

Die apply () - Sammlung wird mit dem wesentlichen Paket r gebündelt , wenn Sie R mit Anaconda installieren. Die Funktion apply () kann mit vielen Funktionen gespeist werden, um eine redundante Anwendung auf eine Sammlung von Objekten (Datenrahmen, Liste, Vektor usw.) durchzuführen. Der Zweck von apply () besteht hauptsächlich darin, die explizite Verwendung von Schleifenkonstrukten zu vermeiden. Sie können für eine Eingabeliste, eine Matrix oder ein Array verwendet werden und eine Funktion anwenden. Jede Funktion kann an apply () übergeben werden.

In diesem Tutorial lernen Sie

  • Funktion apply ()
  • Funktion lapply ()
  • sapply () Funktion
  • Schnittvektor
  • Funktion tapply ()

Funktion apply ()

apply () verwendet den Datenrahmen oder die Matrix als Eingabe und gibt die Ausgabe in Vektor, Liste oder Array aus. Die Funktion apply () wird hauptsächlich verwendet, um die explizite Verwendung von Schleifenkonstrukten zu vermeiden. Es ist die grundlegendste aller Sammlungen, die über einer Matrize verwendet werden können.

Diese Funktion benötigt 3 Argumente:

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>

Das einfachste Beispiel ist die Summe einer Matrize über alle Spalten. Der Code apply (m1, 2, sum) wendet die Summenfunktion auf die Matrix 5x6 an und gibt die Summe jeder Spalte zurück, auf die im Datensatz zugegriffen werden kann.

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

Ausgabe:

Best Practice: Speichern Sie die Werte, bevor Sie sie auf der Konsole drucken.

Funktion lapply ()

Die Funktion lapply () ist nützlich, um Operationen an Listenobjekten auszuführen, und gibt ein Listenobjekt mit der gleichen Länge des ursprünglichen Satzes zurück. lappy () gibt eine Liste mit der gleichen Länge wie das Eingabelistenobjekt zurück, deren jedes Element das Ergebnis der Anwendung von FUN auf das entsprechende Listenelement ist. lapply () nimmt Liste, Vektor oder Datenrahmen als Eingabe und gibt die Ausgabe in der Liste aus.

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

l in lapply () steht für list. Der Unterschied zwischen lapply () und apply () liegt zwischen der Ausgaberückgabe. Die Ausgabe von lapply () ist eine Liste. lapply () kann für andere Objekte wie Datenrahmen und Listen verwendet werden.

Die Funktion lapply () benötigt MARGIN nicht.

Ein sehr einfaches Beispiel kann darin bestehen, den Zeichenfolgenwert einer Matrix mit der Tolower-Funktion in Kleinbuchstaben zu ändern. Wir konstruieren eine Matrix mit dem Namen der berühmten Filme. Der Name ist in Großbuchstaben.

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

Ausgabe:

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

Wir können unlist () verwenden, um die Liste in einen Vektor zu konvertieren.

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

Ausgabe:

## chr [1:4] "spyderman" "batman" "vertigo" "chinatown"

sapply () Funktion

Die Funktion sapply () verwendet eine Liste, einen Vektor oder einen Datenrahmen als Eingabe und gibt eine Ausgabe in einem Vektor oder einer Matrix aus. Es ist nützlich für Operationen an Listenobjekten und gibt ein Listenobjekt mit der gleichen Länge des ursprünglichen Satzes zurück. Die Funktion sapply () erledigt den gleichen Job wie die Funktion lapply (), gibt jedoch einen Vektor zurück.

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

Wir können die Mindestgeschwindigkeit und den Bremsweg von Autos aus dem Autodatensatz messen.

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

Ausgabe:

## $speed## [1] 4## $dist## [1] 2
smn_cars

Ausgabe:

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

Ausgabe:

## $speed## [1] 25## $dist## [1] 120
smxcars

Ausgabe:

## speed dist## 25 120

Wir können eine vom Benutzer integrierte Funktion in lapply () oder sapply () verwenden. Wir erstellen eine Funktion namens avg, um den Durchschnitt des Minimums und Maximums des Vektors zu berechnen.

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

Ausgabe

## speed dist## 14.5 61.0

Die Funktion sapply () ist in der zurückgegebenen Ausgabe effizienter als lapply (), da sapply () Werte direkt in einem Vektor speichert. Im nächsten Beispiel werden wir sehen, dass dies nicht immer der Fall ist.

Wir können den Unterschied zwischen apply (), sapply () und `lapply () in der folgenden Tabelle zusammenfassen:

Funktion

Argumente

Zielsetzung

Eingang

Ausgabe

anwenden

bewerben (x, MARGIN, FUN)

Wenden Sie eine Funktion auf die Zeilen oder Spalten oder auf beide an

Datenrahmen oder Matrix

Vektor, Liste, Array

lapply

lapply (X, FUN)

Wenden Sie eine Funktion auf alle Elemente der Eingabe an

Liste, Vektor oder Datenrahmen

Liste

sapply

sappy (X FUN)

Wenden Sie eine Funktion auf alle Elemente der Eingabe an

Liste, Vektor oder Datenrahmen

Vektor oder Matrix

Schnittvektor

Wir können lapply () oder sapply () austauschbar verwenden, um einen Datenrahmen zu schneiden. Wir erstellen eine Funktion, Below_average (), die einen Vektor mit numerischen Werten verwendet und einen Vektor zurückgibt, der nur die Werte enthält, die streng über dem Durchschnitt liegen. Wir vergleichen beide Ergebnisse mit der identischen () Funktion.

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

Ausgabe:

## [1] TRUE

Funktion tapply ()

tapply () berechnet ein Maß (Mittelwert, Median, Min, Max usw.) oder eine Funktion für jede Faktorvariable in einem Vektor. Es ist eine sehr nützliche Funktion, mit der Sie eine Teilmenge eines Vektors erstellen und dann einige Funktionen auf jede Teilmenge anwenden können.

tapply(X, INDEX, FUN = NULL)Arguments:-X: An object, usually a vector-INDEX: A list containing factor-FUN: Function applied to each element of x

Ein Teil der Aufgabe eines Datenwissenschaftlers oder von Forschern besteht darin, Zusammenfassungen von Variablen zu berechnen. Messen Sie beispielsweise die Durchschnitts- oder Gruppendaten basierend auf einem Merkmal. Die meisten Daten sind nach ID, Stadt, Ländern usw. gruppiert. Das Zusammenfassen über die Gruppe zeigt interessantere Muster.

Um zu verstehen, wie es funktioniert, verwenden wir den Iris-Datensatz. Dieser Datensatz ist in der Welt des maschinellen Lernens sehr bekannt. Der Zweck dieses Datensatzes besteht darin, die Klasse jeder der drei Blumenarten vorherzusagen: Sepal, Versicolor, Virginica. Der Datensatz sammelt Informationen für jede Art über ihre Länge und Breite.

Als vorherige Arbeit können wir den Median der Länge für jede Art berechnen. Mit tapply () können Sie diese Berechnung schnell durchführen.

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

Ausgabe:

## setosa versicolor virginica## 3.4 2.8 3.0