Die Funktion apply() ist absolut eine der wertvollsten Fähigkeiten. Ich hatte während einiger Zeit Angst davor und wollte sie nicht nutzen. Sie macht den Code jedoch so viel schneller zu komponieren, so kompetent, dass wir die Kosten nicht tragen können, wenn wir sie nicht nutzen. Für den unwahrscheinlichen Fall, dass Sie mir ähneln, dass Sie die Anwendung nicht nutzen werden, weil sie alarmierend ist, wird sie Sie unterstützen. Sie müssen sich darüber klar werden, wie Sie apply() nutzen können, wenn alles fertig ist, mit einer hausgemachten Kapazität oder mit einigen wenigen Parametern? An diesem Punkt sehen Sie sich die begleitenden Modelle an.

Die Funktion apply() ist als unglaublich wertvoll bekannt, um die Geschwindigkeit unseres Codes zu verbessern, wenn wir einige wenige Kapazitäten auf einem Netzwerk oder einem Vektor arbeiten müssen. Ich benutze sie, aber ich habe im Allgemeinen nicht die geringste Ahnung, wie ich sie einsetzen soll.

Was geht hier vor sich?

apply() ist ein R-Werk, das befähigt, rege Aufgaben auf Gitter, Vektor oder Exponat zu stellen. Die Aufgaben sollten auf den Linien, den Segmenten oder sogar auf den beiden möglich sein.

Wie kann das funktionieren?

Das Beispiel ist äußerst einfach: Anwenden (variabel, Kante, Arbeit).

– die Variable ist die Variable, auf die Sie die Kapazität anwenden müssen.

– edge bestimmt die Off-Chance, die Sie per Push (edge = 1), per Segment (edge = 2) oder für jede Komponente (edge = 1:2) anwenden müssen. Die Kante kann viel bemerkenswerter als 2 sein, wenn die Chance besteht, dass wir mit Messfaktoren arbeiten, die stärker hervortreten als zwei.

– Arbeit ist die Fähigkeit, die Sie auf die Komponenten Ihrer Variablen anwenden müssen.

Da ich denke, dass das Modell klarer als alles andere ist, hier ist der wichtigste Leitfaden, um die anzuwendende Kapazität zu verstehen()

Einleitung:

#die Matrix, an der wir arbeiten werden:

a = Matrix(c(1:15), nreihe = 5 , ncol = 3)


#wird die Funktion mean auf alle Elemente jeder rowapply
(a, 1, mean)
# [1] 6 7 8 9 9 10 anwenden

#wendet die Funktion mean auf alle Elemente jeder Spalte an
 (a, 2, mean)
# [1] 3 8 13

#wird die Funktion mean auf alle Elemente jeder Spalte und jeder Zeile anwenden, d.h. auf jedes Elementapply
(a, 1:2, mean)
# [,1] [,2] [,3]
# [1,] 1 6 11#
 [2,] 2 7 12#
 [3,] 3 8 13#
 [4,] 4 9 14#
 [5,] 5 10 15

Wir haben erst kürzlich einen Versuch an den verschiedenen Rändern unternommen, um die grundsätzlich denkbaren Ergebnisse aufzuzeigen. Wie dem auch sei, wie ich schon sagte, können wir uns ebenfalls mit verschiedenen Faktoren befassen, zum Beispiel mit einer Vielzahl von Messwerten 3:

#apply() für Array einer anderen Dimension :
a = array(1:8, dim = c(2,2,2))
apply(a, 3, Summe)

# , , 1##       [,1]
 [,2]
# [1,]    1    3#
 [2,]    2    4##
 , , 2##      
 [,1]
 [,2]# [1,]    5    7#
 [2,]    6    8

Verwenden Sie eine hausgemachte Funktion:

Wir können auch unsere eigene Funktion nutzen. Zum Beispiel reproduzieren wir die Funktionssumme (absolut nutzlos, aber halten wir es einfach!).

f1 = Funktion(x){
 Rückgabe(Summe(x))}Anwendung
(a, 1, f1)

WILLKOMMEN!

 Hier finden Sie tägliche Nachrichten und Tutorials über R, die von Hunderten von Bloggern beigetragen werden.
Es gibt viele Wege, uns zu folgen –
Per E-Mail:

Auf Facebook:
Wenn Sie selbst ein R-Blogger sind, sind Sie eingeladen, Ihren eigenen R-Content-Feed zu dieser Website hinzuzufügen (nicht-englische R-Blogger sollten sich selbst hinzufügen – hier)

SS JOBS FÜR R-BENUTZER

JÜNGSTE POSTEN

SONSTIGE STANDORTE

Funktion apply() – Tipp 1

19. November 2012

Von Edwin Grappin

teilen

[Dieser Artikel wurde zuerst auf ProbaPerception veröffentlicht und freundlicherweise an R-Blogger weitergegeben]. (Sie können über den Inhalt dieser Seite hier berichten)


Möchten Sie Ihre Inhalte auf R-Bloggern veröffentlichen? Klicken Sie hier, wenn Sie einen Blog haben, oder hier, wenn Sie keinen haben.

teilenZwitschern Sie

Die Funktion apply() ist sicherlich eine der nützlichsten Funktionen. Ich hatte während einer Weile Angst davor und weigerte mich, sie zu benutzen. Aber sie macht den Code so viel schneller zu schreiben und so effizient, dass wir es uns nicht leisten können, sie nicht zu benutzen. Wenn Sie wie ich sind, dass Sie sich weigern, apply() zu benutzen, weil es Angst macht, lesen Sie die folgenden Zeilen, es wird Ihnen helfen. Sie wollen wissen, wie man apply() im Allgemeinen, mit einer selbstgemachten Funktion oder mit mehreren Parametern benutzt ? Dann sehen Sie sich die folgenden Beispiele an.



Die Funktion apply() ist als äußerst nützlich bekannt, um die Geschwindigkeit unseres Codes zu verbessern, wenn wir einige Funktionen auf einer Matrix oder einem Vektor betreiben wollen. Ich benutze sie, aber ich weiß nicht wirklich, wie man sie benutzt.

Was ist das?

apply() ist eine R-Funktion, die es ermöglicht, schnelle Operationen auf Matrix, Vektor oder Array durchzuführen. Die Operationen können auf den Zeilen, den Spalten oder sogar auf beiden durchgeführt werden.

Wie funktioniert das?

Das Muster ist wirklich einfach : apply(Variable, Rand, Funktion).
-Variable ist die Variable, auf die Sie die Funktion anwenden möchten.
-margin gibt an, ob Sie die Funktion zeilenweise (margin = 1), spaltenweise (margin = 2) oder für jedes Element (margin = 1:2) anwenden möchten. Marge kann sogar größer als 2 sein, wenn wir mit Variablen arbeiten, deren Dimension größer als zwei ist.
-Funktion ist die Funktion, die Sie auf die Elemente Ihrer Variable anwenden möchten.

Weil ich denke, dass ein Beispiel klarer als alles andere ist, hier ist das wichtigste Beispiel, um die Funktion apply() zu verstehen.

Einleitung:

#die Matrix, an der wir arbeiten werden:

a = Matrix(c(1:15), nreihe = 5 , ncol = 3)


#wird die Funktion mean auf alle Elemente jeder rowapply
(a, 1, mean)
# [1] 6 7 8 9 9 10 anwenden

#wendet die Funktion mean auf alle Elemente jeder Spalte an
 (a, 2, mean)
# [1] 3 8 13

#wird die Funktion mean auf alle Elemente jeder Spalte und jeder Zeile anwenden, d.h. auf jedes Elementapply
(a, 1:2, mean)
# [,1] [,2] [,3]
# [1,] 1 6 11#
 [2,] 2 7 12#
 [3,] 3 8 13#
 [4,] 4 9 14#
 [5,] 5 10 15

Wir haben gerade an den verschiedenen Rändern gearbeitet, um die grundlegenden Möglichkeiten aufzuzeigen. Aber wie gesagt, wir können auch an anderen Variablen arbeiten, z.B. an einer Reihe von Dimension 3:

#apply() für Array einer anderen Dimension :
a = array(1:8, dim = c(2,2,2))
apply(a, 3, Summe)

# , , 1##       [,1]
 [,2]
# [1,]    1    3#
 [2,]    2    4##
 , , 2##      
 [,1]
 [,2]# [1,]    5    7#
 [2,]    6    8

Einige Parameter:

Kapazität mit einigen wenigen Parametern. Hier ist die Hauptmotivation, warum ich nie apply() verwendet habe, ich hatte nicht die geringste Ahnung, wie ich mich verhalten sollte, wenn ich nur wenige Parameter in einer Kapazität hatte. Das ist sehr einfach, wir müssen lediglich im Parameter die Variable angeben, die konsistent ist.

Verwenden Sie eine hausgemachte Funktion:

Wir können auch unsere eigene Funktion nutzen. Zum Beispiel reproduzieren wir die Funktionssumme (absolut nutzlos, aber halten wir es einfach!).

f1 = Funktion(x){
 Rückgabe(Summe(x))}

anwenden(a, 1, f1)

Mehrere Parameter:
Eine Funktion mit mehreren Parametern. Hier ist der Hauptgrund, warum ich nie apply()
verwendet habe. Ich wusste nicht, wie ich mich verhalten sollte, wenn ich mehrere Parameter in einer Funktion hatte. Das ist ganz einfach, wir müssen nur im Parameter die Variable angeben, die konstant ist.

f2 = Funktion(x1,x2){
 x1-x2}b
 = 2

#mit dem zweiten Parameter als Optionapply
(a,1,f2,x2=b)

#       [,1] [,2] [,3] [,4] [,5]# [1,]
   -1    0    1    2    3#
 [2,]    4    5    6    7    8#
 [3,]    9   10   11   12   13#
 [3,]   22   24   26   28   30

#mit dem ersten Parameter als Optionapply
(a,1,f2,x1=b)

# [,1] [,2] [,3] [,4] [,5]
# [1,]    1    0   -1   -2   -3#
 [2,]   -4   -5   -6   -7   -8#
 [3,]   -9  -10  -11  -12  -13

Ich vertraue darauf, dass diese Modelle Sie unterstützen werden. Nach und nach nutze ich die Kapazität apply(), da ich diese beiden Modelle erlebt habe. Offensichtlich gibt es zahlreiche verschiedene Feinheiten, die wertvoll sein können, aber diese ersten Modelle handhaben die ersten hilfreichen denkbaren Ergebnisse von apply().