Hallo Leute,
ich habe eine Liste, die 3 Vektoren beinhaltet.
Ich möchte über die lapply() Funktion nicht nur eine Funktion auf die 3 Elemente meiner Liste anwenden, sondern gleich mehrere Funktionen.
Wie kann ich das am Besten tun?
Dem FUN Argument einfach mehrere Funktionen zu übergeben klappt schonmal nicht wirklich.
Liebe Grüße
Bill
Mehrere Funktionen an FUN Argument aus lapply() übergeben
Re: Mehrere Funktionen an FUN Argument aus lapply() übergeben
Hallo Bill,
bitte ein reproduzierbares Beispiel liefern
Mein Ansatz wäre:
1. eigene Funktion schreiben, die die drei verschiedenen Berechnungen durchführt und deren Ergebnisse am Ende in ein einziges Objekt packt (z.B. ein Vektor mit benannten Elementen oder eine Liste oder ...)
2. Diese eigene Funktion beim Aufruf von lapply() bei FUN= angeben.
Gruß, Jörg
bitte ein reproduzierbares Beispiel liefern
Mein Ansatz wäre:
1. eigene Funktion schreiben, die die drei verschiedenen Berechnungen durchführt und deren Ergebnisse am Ende in ein einziges Objekt packt (z.B. ein Vektor mit benannten Elementen oder eine Liste oder ...)
2. Diese eigene Funktion beim Aufruf von lapply() bei FUN= angeben.
Gruß, Jörg
Re: Mehrere Funktionen an FUN Argument aus lapply() übergeben
Guten Abend,
ein Beispiel könnte wie folgt lauten:
Die help() Funktion von lapply zeigt auf, dass es ein Argument "..." nach dem FUN Argument gibt, dass für optionale Argumente für FUN gedacht ist.
Ich hätte gedacht, meine o.g. Codierung tut genau das, was ich ursprünglich wollte. Nämlich sowohl die Funktion mad() als auch die Funktion IQR() auf die Listenelemente anwenden. Tut diese aber leider nicht. Versteh ich das Argument "..." falsch?
Deine Idee ist natürlich eine Möglichkeit, über die ich nachdenken werde.
Liebe Grüße
Bill
ein Beispiel könnte wie folgt lauten:
Code: Alles auswählen
V1 <- 1:5
V2 <- 10:35
V3 <- 9:19
L1 <- list(V1 , V2 , V3)
lapply(L1 , FUN=mad,IQR)
Ich hätte gedacht, meine o.g. Codierung tut genau das, was ich ursprünglich wollte. Nämlich sowohl die Funktion mad() als auch die Funktion IQR() auf die Listenelemente anwenden. Tut diese aber leider nicht. Versteh ich das Argument "..." falsch?
Deine Idee ist natürlich eine Möglichkeit, über die ich nachdenken werde.
Liebe Grüße
Bill
Re: Mehrere Funktionen an FUN Argument aus lapply() übergeben
Bei mir sieht es so aus:Bill hat geschrieben: ↑Mi Apr 15, 2020 10:15 pm ein Beispiel könnte wie folgt lauten:
Code: Alles auswählen
V1 <- 1:5 V2 <- 10:35 V3 <- 9:19 L1 <- list(V1 , V2 , V3) lapply(L1 , FUN=mad,IQR)
Code: Alles auswählen
V1 <- 1:5
V2 <- 10:35
V3 <- 9:19
L1 <- list(V1 , V2 , V3)
sapply(L1 , FUN=function(x) c(mad=mad(x),irq=IQR(x)))
Da hast Du etwas falsch verstanden.Die help() Funktion von lapply zeigt auf, dass es ein Argument "..." nach dem FUN Argument gibt, dass für optionale Argumente für FUN gedacht ist.
Ich hätte gedacht, meine o.g. Codierung tut genau das, was ich ursprünglich wollte. Nämlich sowohl die Funktion mad() als auch die Funktion IQR() auf die Listenelemente anwenden. Tut diese aber leider nicht. Versteh ich das Argument "..." falsch?
(So ähnlich war das bei der Beschreibung des großen Plapperkäfers von Traal im Anhalter ...)
Es geht um folgendes:
Manche Funktionen haben zusätzliche Argumente, z.B. hat die Funktion mean() noch die Argumente trim= und na.rm=. Diese zusätzlichen Argumente können per ... an die Funktion übergeben werden, welche bei FUN= angegeben ist:
Code: Alles auswählen
V1 <- c(1:5, NA)
V2 <- 10:35
V3 <- c(NA, 9:19)
L1 <- list(V1 , V2 , V3)
sapply(L1 , FUN=mean)
sapply(L1 , FUN=mean, na.rm=TRUE)