Wie man eine Liste oder Datenrahmen mit R nach Traverse Funktionen Nehmen

Wenn Ihre Daten aus einer Liste in der Form, und Sie wollen in R, das geeignete für jedes Element dieser Liste Berechnungen durchzuführen anwenden Funktion ist lapply (). Um zum Beispiel die Klasse jedes Elements zu erhalten Iris, Mach Folgendes:

> Lapply (Iris, Klasse)

Wie Sie wissen, wenn Sie sapply (), R versucht, die Ergebnisse in einer Matrix oder Vektor zu vereinfachen:

> Sapply (Iris, Klasse) Sepal.Length Sepal.Width Petal.Length Petal.Width Species "numerisch" "numerisch" "numerisch" "numerisch" "Faktor"

Sagen Sie den Mittelwert jeder Spalte berechnet werden soll von Iris:

> Sapply (Iris, bedeuten) Sepal.Length Sepal.Width Petal.Length Petal.Width Species5.843333 3,057333 3,758000 1,199333 NAWarning Nachricht: In mean.default (X [[5L]], ...): Argument nicht numerisch ist oder logisch: Rückkehr NA

Es besteht ein Problem mit dieser Codezeile. Es wirft eine Warnmeldung wegen Spezies ist nicht eine numerische Spalte. So können Sie eine kleine Funktion nach innen zu schreiben apply () dass geprüft wird, ob das Argument numerisch ist. Wenn ja, berechnen dann die mittlere Score- ansonsten einfach zurückgeben N / A.

Das SPASS Argument der apply () Funktionen kann eine beliebige Funktion sein, Ihre eigenen benutzerdefinierten Funktionen einschließlich. In der Tat kann man noch einen Schritt weiter gehen. Es ist tatsächlich möglich, eine Funktion zu definieren, innerhalb das SPASS Argument Aufruf zu einem apply () Funktion:

> Sapply (Iris, Funktion (x) ifelse (is.numeric (x), Mittelwert (x), NA)) Sepal.Length Sepal.Width Petal.Length Petal.Width Species5.843333 3,057333 3,758000 1,199333 NA

Was passiert hier? Sie definiert eine Funktion, die ein einzelnes Argument x. Ob x numerisch ist, kehrt Mittelwert (x)- andernfalls kehrt N / A. weil sapply () durchläuft die Liste, jede Spalte, wird wiederum an Ihre Funktion und ausgewertet geben.

Wenn Sie eine namenlos Funktion wie diese in einer anderen Funktion zu definieren, ist es ein rief anonyme Funktion. Anonyme Funktionen sind nützlich, wenn Sie etwas ziemlich einfach zu berechnen wollen, aber Sie wollen nicht unbedingt speichern dauerhaft die Funktion in Ihrem Arbeitsbereich.

Menü