Funktionen schreiben in R

R programmierung formale modelle

Funktionen: Technische und konzeptuelle Aspekte

Marc Jekel true
05-10-2021

Funktionen und formalisierte (kognitive) Modellierung

Formalisierte (kognitive) Modelle lassen sich als Funktionen programmieren, so dass sie bei Programmierung an der benötigten Stelle einfach aufgerufen werden können. Funktionen sind auch aus technischen Gründen notwendig, um zum Beispiel Parallelisierung bei der Ausführung von R-Code einfach umzusetzen. Funktionen sollten möglichst allgemein programmiert werden, so dass diese flexibel eingesetzt werden können, ohne dass diese stärker angepasst werden müssen. Eine Funktion besteht aus Inputargumenten, diese werden durch die Modellgleichungen in einen Output überführt.

Modell eines Modells

In der folgenden Abbildung ist ein Modell eines (Prozess-)Modells dargestellt. Dieses beinhaltet Modellfunktionen. Funktionen scheinen somit strukturell gut zur formalisierten kognitiven Modellierung zu passen.

Modell eines Modells; aus Miller & Page (2007), S. 38

Von \(t\) zu \(t+1\) verändern sich die Zustände \(S\) der Welt. Wie die Zustände von \(t\) in \(t+1\) überführt werden, ist in der Übergangsfunktion \(F(S)\) dargestellt. \(F(S)\) ist uns nicht bekannt, als Modellierer versuchen wir jedoch die relevanten Zustände zu \(t\) als Inputargumente für die Modellfunktion \(f(s)\) zu messen (= \(E(S\))), um damit Aussagen bzw. Hypothesen zu den Zuständen zu \(t+1\) ableiten zu können.

Struktur von Funktionen in R

Funktionen in R bestehen aus einem Funktionsbefehl, der in Klammern ()Inputargumente listet. Ein Befehl in R ist zum Beispiel die Berechnung des Mittelwerts. Der Befehlsname is mean und als Argument wird mindestens ein Objekt in () benötigt, über den der Mittelwerte gerechnet werden soll.

r_vector = rnorm(100)
mean(r_vector)
[1] 0.04144602

Eigene Funktionen

Eigene Funktionen lassen sich in R einfach programmieren. Die folgende Funktion rechnet über die Zahlen im Objekt r_object den Mittelwert und zusätzlich den Median, wenn das Funktionsargument median auf 1 gesetzt wird.

Dem Funktionsnamen meine_funktion folgt der Befehl function(). Innerhalb der Klammern () werden die Inputargumente eingetragen. Das Argument median hat einen default Wert von 1, d. h., per default wird auch der Median gerechnet. Dann folgt die eigentliche Funktion innerhalb der geschweiften Klammern {}. Am Ende steht der Befehl return(), dieser beinhaltet das Ausgabeobjekt (= Output) der Funktion.

meine_funktion = function(r_object, median = 1){
  
  if(median  == 1){
    
      output_1 = mean(r_object)
      output_2 = median(r_object)
      all_output = c("mean"= output_1, "median" = output_2)
    
  }else{
    
    output_1 = mean(r_object)
    all_output = c("mean" = output_1)
  }

  return(all_output)
}

Die Funktion kann nun, nachdem sie in R eingelesen wurde, ausgeführt werden.

meine_funktion(r_object = r_vector)
      mean     median 
0.04144602 0.11476745 
meine_funktion(r_object = r_vector, median = 0)
      mean 
0.04144602 
Miller, J. H., & Page, S. E. (2007). Complex adaptive systems: an introduction to computational models of social life. Princeton University Press.

References