R ist wirklich eine funktionale Sprache

von Karl-Kuno Kunze

Sie haben sicher schon gehört, dass R eine funktionale Sprache ist. In diesem Artikel erinnere ich Sie anhand von zwei Beispielen, wie weit das Konzept reicht.

Beispiel 1

Eine Funktion schreibt man so:

coolFun <- function(x) {
  cat(x, "and ")
  cat(x**2)
}
coolFun(2)
## 2 and 4

Mehr als eine Anweisung werden in geschweifte Klammern gesetzt.

Auf der anderen Seite sind geschweifte Klammern jedoch selbst eine Funktion. Daher klappt das hier auch:

coolFun <- function(x) '{'(cat(x, "and "), cat(x**2) )
coolFun(2)
## 2 and 4

Beispiel 2

So wendet man den Auswahloperator auf Vektoren und ähnliche Strukturen an:

myVec <- c(1:3)
myVec[2]
## [1] 2

Aber wie wär’s damit:

'['(myVec,2)
## [1] 2

Auf diese Weise kann man den Auswahloperator in Apply-Anweisungen verwenden, zum Beispiel für rollierende Durchschnittswerte

mySeries <- c(1:9)
winLength <- 3
sapply(c(1:7),
       function(n) mean('['(mySeries, c(n, n + winLength - 1 ))))
## [1] 2 3 4 5 6 7 8

Die anonyme Funktion berechnet den Durchschnittswert einer Teilmenge von mySeries beginnend bei n und mit einer Fenstergröße von winLength. Das einzige Argument ist n. Diese Funktion wird dann auf die Reihe angewendet, die bei 1 startet und bei 7 endet.

________________________________________________________________________________________________

Sie sind an weiteren Tipps über die Programmiersprache R interessiert? Tragen Sie sich in unseren Newsletter ein und bleiben Sie auf dem Laufenden.

Interesse an einem Seminar beim Autor Karl-Kuno Kunze? Hier gelangen Sie zu unseren Trainings in Potsdam. Optional auch in Ihrem Unternehmen vor Ort. Sprechen Sie uns an!