Eigene Funktion auf Spalten eines Data Frames anwenden

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
A346
Beiträge: 22
Registriert: Di Okt 20, 2020 11:04 am

Eigene Funktion auf Spalten eines Data Frames anwenden

Beitrag 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
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Eigene Funktion auf Spalten eines Data Frames anwenden

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten