Wie bewerbe ich mich Funktionen auf Zeilen und Spalten in R

In R, können Sie mit dem apply ()

Funktion eine Funktion über jede Zeile oder Spalte einer Matrix oder Datenrahmen anzuwenden. Dies stellt einige sehr praktische Möglichkeiten.

Graf in R mit der anwenden Funktion

Stellen Sie sich die Vögel in Ihrem Garten an drei verschiedenen Tagen und gespeichert, um die Zählungen in einer Matrix wie folgt gezählt:

> zählt lt; - Matrix (c (3,2,4,6,5,1,8,6,1), ncol = 3)> COLNAMES (Counts) lt; - c ( "Sperling", "Taube", "Krähen)> countssparrow Taube crow [1] 368 [2] 256 [3] 411

Jede Spalte steht für eine andere Spezies, und jede Zeile steht für einen anderen Tag. Jetzt wollen Sie an einem bestimmten Tag die maximale Anzahl pro Art kennen. Sie könnten ein Konstrukt für Schleife zu tun, sondern mit apply (), Sie tun dies nur eine Zeile Code in:

gelten> (counts, 2, max) sparrowdovecrow4 6 8

Das apply () Funktion gibt einen Vektor mit dem Maximum für jede Spalte und bequem verwendet die Spaltennamen als Namen für diesen Vektor als auch. Wenn R nicht Namen für die Dimension finden, über die apply () läuft, es gibt ein unbenanntes Objekt statt.

Lassen Sie uns an, wie diese einen Blick apply () Funktion arbeitet. In den vorangegangenen Zeilen Code, verwendet man drei Argumente:

  • Das Objekt, auf dem die Funktion angewendet werden: In diesem Fall ist es die Matrix zählt.

  • Die Dimension oder der Index, über die die Funktion angewendet werden: Die Nummer 1 bedeutet, reihenweise, und die Zahl 2 bedeutet, spaltenweise. Hier wenden wir die Funktion über die Spalten. Im Falle von mehr-dimensionalen Arrays kann dieser Index größer als 2.

  • Der Name der Funktion, die aufgebracht werden muss: Sie können Anführungszeichen um den Funktionsnamen verwenden, aber Sie müssen nicht. Hier wenden wir die Funktion max. Beachten Sie, dass es keine Klammern nach dem Namen der Funktion erforderlich sind.

Das apply () Funktion teilt die Matrix in Reihen auf. Denken Sie daran, dass, wenn Sie eine einzelne Zeile oder Spalte auswählen, R wird standardmäßig zu vereinfachen, dass auf einen Vektor. Das apply () Funktion verwendet dann diese Vektoren nacheinander als Argument an die angegebene Funktion. So benötigt die angewandte Funktion der Lage sein, mit Vektoren zu behandeln.

Fügen Sie zusätzliche Argumente für die anwenden Funktion

Lassen Sie uns aus dem vorangegangenen Abschnitt zu unserem Beispiel zurück: Stellen Sie sich nicht am zweiten Tag für Tauben aussah. Dies bedeutet, dass für diesen Tag, Sie haben noch keine Daten haben, so haben Sie, um diesen Wert eingestellt N / A so was:

> Zählwerte [2, 2] lt; - NA

Wenn Sie sich bewerben die max Funktion auf den Spalten dieser Matrix, Sie erhalten folgendes Ergebnis:

gelten> (counts, 2, max) sparrowdovecrow4 NA 8

Das ist nicht das, was Sie wollen. Um mit den fehlenden Werten zu umgehen, müssen Sie das Argument übergeben na.rm zum max Funktion in der apply () rufen (siehe Kapitel 4). Zum Glück, das leicht in R. Sie getan haben gerade alle zusätzlichen Argumente an die Funktion als zusätzliche Argumente der hinzufügen apply () nennen, wie folgt aus:

> Gelten (counts, 2, max, na.rm = TRUE) sparrowdovecrow4 6 8

Sie können alle Argumente übergeben Sie die Funktion wollen in der apply () anrufen, indem sie einfach zwischen den Klammern nach den ersten drei Argumente hinzufügen.

Menü