Читать книгу R für Dummies - Andrie de Vries - Страница 67

Vektorwertige Funktionen verwenden

Оглавление

Vektorwertige Funktionen sind eine sehr hilfreiche Einrichtung von R. Leider haben Programmierer, die von anderen Sprachen kommen, zunächst Schwierigkeiten damit. Eine vektorwertige Funktion manipuliert nicht nur eine einzige Eingangsgröße, sondern gleich einen ganzen Vektor. Der erste Impuls geht bei vielen Programmierern dahin, eine Schleife zu programmieren, die die Elemente des Vektors einzeln bearbeitet. Widerstehen Sie dieser Versuchung und vertrauen Sie uns! Mit vektorwertigen Funktionen geht alles viel einfacher – und Ihr Code wird schöner.

Um vektorwertige Funktionen ausprobieren zu können, benötigen Sie zunächst einmal einen Vektor. Dazu verwenden Sie die Funktion c() (von englisch combine = verketten). Die einzelnen Elemente trennen Sie durch Kommata.

Sehen wir uns ein Beispiel an. Nehmen wir an, Oma spielt mit ihrer Freundin Margarete Basketball und Sie schreiben sich die Körbe von Oma in jedem Spiel auf. Nach sechs Spielen wollen Sie wissen, wie viele Körbe Oma in dieser Saison bereits geworfen hat. Die Körbe pro Spiel können Sie in einem Vektor zusammenfassen:

> koerbe.von.Oma <- c(12, 4, 4, 6, 9, 3)

> koerbe.von.Oma

[1] 12 4 4 6 9 3

Um jetzt die Gesamtzahl der von Oma geworfenen Körbe zu ermitteln, geben Sie ein:

> sum(koerbe.von.Oma)

[1] 38

Natürlich würden Sie dasselbe Ergebnis erhalten, wenn Sie den Vektor Element für Element durchgehen und dabei jedes neue Element zur Summe der bereits abgearbeiteten Elemente hinzufügen. Dies wäre jedoch deutlich aufwendiger, würde mehr Code erfordern und die Berechnung würde länger dauern. Bei sechs Elementen wäre das sicher noch kein Beinbruch, aber bei ein paar Tausend schon.

Tatsächlich gibt es diese Art von Vektorisierung in vielen Programmiersprachen. Funktionen, die auf diese Art arbeiten, summieren die Elemente eines Vektors auf; sie nehmen alle Werte des Vektors und berechnen ein Ergebnis.

Auch kann R Funktionen mit Vektoren kombinieren. Diese Art von Vektorisierung ist ziemlich einzigartig und wesentlicher Bestandteil der unglaublichen Macht von R als Sprache. Ziemlich viele Menschen haben beim Verständnis dieses Konzepts anfangs Probleme, dies ändert sich jedoch ziemlich schnell, wenn sie das Ganze selbst umsetzen.

Nehmen wir zum Beispiel die Funktion paste(), der Sie im letzten Kapitel schon begegnet sind. Zunächst erschaffen Sie zwei Vektoren (zum Beispiel einen mit den Vornamen und einen mit den Nachnamen). Dann können Sie mit der Funktion paste() beide kombinieren.

> vornamen <- c("Andrie", "Joris")

> nachnamen <- c("de Vries", "Meys")

> paste(vornamen, nachnamen)

[1] "Andrie de Vries" "Joris Meys"

Angenommen, die Mitglieder Ihrer Familie tragen denselben Nachnamen. Dann können wir diesen mithilfe von paste() allen Vornamen gleichzeitig hinzufügen. Probieren wir es aus (dieses Buch führt gleichzeitig zum Diplom in belgischer Namenskunde):

> vornamen <- c("Joris", "Carolien", "Koen")

> nachname <- "Meys"

> paste(vornamen,nachname)

[1] "Joris Meys" "Carolien Meys" "Koen Meys"

Wie Sie sehen, nimmt R den Vektor vornamen und klebt den Inhalt der Variablen nachname an jedes Element von vornamen dran. Das ist doch wirklich klasse, oder?

Hinter den Kulissen kombiniert R zwei Vektoren. In unserem Beispiel hat der zweite Vektor nur ein Element. Damit R die beiden Vektoren elementweise zusammenfügen kann, wird von paste() der zweite Vektor einfach so lange wiederholt, bis beide die gleiche Zahl an Elementen haben. Passenderweise nennt man das Recycling (mehr dazu finden Sie in Kapitel 4).

Das sieht nicht wirklich kompliziert aus, oder? Alles, was Sie brauchen, sind zwei Vektoren, die Sie in die Funktion stecken, also diese als Argumente übergeben. In Kapitel 5 erfahren Sie mehr zu paste().

R für Dummies

Подняться наверх