Ich habe eine Liste (in R), wo die Elemente verschiedene Datentypen sind, z. B. das erste Element ist numerisch und das zweite Element ist ein Zeichen. Ich möchte auf jedes Element eine andere Funktion anwenden. Im folgenden Beispiel versuche ich beispielsweise, die Summenfunktion nur auf das erste Element und die Längenfunktion nur auf das zweite Element anzuwenden. Gibt es eine Möglichkeit, auf jedes Element einer Liste eine andere Funktion anzuwenden (ohne die Liste zu trennen)?R verschiedene Funktionen für jedes Element der Liste
data <- list(
A = rnorm(10),
B = letters[1:10]
)
lapply(data, list(sum, length))
mapply(function(x) sum, length, data)
konnte Sie machen Sie etwas Ähnliches mit 'do.call', aber Sie müssen' data' leicht anpassen, um eine Liste von Listen zu sein. – joran
... Interessanterweise scheint es (das Ignorieren der Notwendigkeit, jedes Argument zu recyceln), einfach eine 'for' -Schleife zu schreiben, die jede Funktion nacheinander anwendet, ~ 5x schneller. – joran
Gut geschriebene For-Loops sind nach meiner Erfahrung normalerweise schneller, obwohl die Geschwindigkeit normalerweise nicht so groß ist. – MrFlick