Seite 1 von 1

Eigene Funktion auf Spalten eines Data Frames anwenden

Verfasst: Mo Nov 16, 2020 9:56 am
von A346
Hallo Zusammen,

ich habe ein Data Frame "DATA" bestehend aus 100 Zeilen und 3 Spalten.
Ich habe eine Funktion "Fct.R" welche als Eingangsgröße den Wert aus Spalte 2 braucht und dann den Wert für Spalte 3 berechnet.

Nun möchte ich die Funktion auf alle 100 Zeilen anwenden ohne eine for-Schleife zu benutzen. Irgendwie müsste das mit apply gehen, aber ich weiß ehrlich gesgt nicht wie...

Kann mir jemand helfen?

Viele Grüße
A346

Re: Eigene Funktion auf Spalten eines Data Frames anwenden

Verfasst: Mo Nov 16, 2020 10:10 am
von bigben
Hallo,

da gibt es nicht die eine, sondern viele mögliche Antworten und es kommt auf den genauen Fall an. Eine Möglichkeit ist die Funktion apply mit MAR = 1. Die gibt der Funktion immer einen Vektor mit den Werten je einer Zeile des Data.frames mit. Dabei kann es zu Typumwandlungen kommen wie im folgenden Beispiel:

Code: Alles auswählen

twice <- function(x) as.numeric(x[2]) * 2

bsp <-  data.frame(a = LETTERS[1:10],
                   b = 1:10,
                   c = runif(10))

apply(bsp, 1, twice)
In diesem konkreten Fall könnte man es viel einfacher haben mit

Code: Alles auswählen

bsp <-  data.frame(a = LETTERS[1:10],
                   b = 1:10,
                   c = runif(10))

2 * bsp$b
aber das klappt halt nicht immer.

Ansonsten sind auch for-Schleifen nicht per se schlecht.

LG,
Bernhard