GNU R: eigene Funktionen programmieren

Aus Wikibooks

Wechseln zu: Navigation, Suche
Nuvola apps bookcase.svg EDV Nuvola apps bookcase 1.svg GNU R


In R lassen sich eigene Funktionen problemlos integrieren. Die wohl "einfachste" Methode hierbei ist, die Funktionen in der R-Sprache selber zu schreiben. Es besteht aber auch die Möglichkeit, neue Funktionen in Programmiersprachen wie z.B. C++ zu programmieren.

Inhaltsverzeichnis

[Bearbeiten] R-Sprache

[Bearbeiten] Funktionsaufbau

Zum Erstellen einer eigenen Funktion steht der Befehl function() zur Verfügung. Dieser ist wie folgt aufzurufen:

function(Parameter1, Parameter2, ...) {
        FUNKTIONSWEISE
        }

In den Klammern direkt nach function können Parameter benannt werden, welche dann beim Funktionsaufruf der Funktion zur Verfügung stehen. Innerhalb der geschweiften Klammern wird die eigentliche Funktionsweise geschrieben.

Um eine neue Funktion in R aufrufen zu können, wird die Funktionsweise einem neuen Objekt (z.b. myfunc) zugeordnet.

myfunc <- function(x,y){ # Neue Funktion mit den Parametern x und y
          z <- x+y       # Die Summe von x und y wird in z gespeichert
          return(z)      # z wird zurückgemeldet
          }

Der obige Dummy-Funktion werden im Funktionsaufruf die Parameter x und y übergeben. Innerhalb der Funktion wird die Summe aus x und y gebildet, und per return() an die R-Konsole zurückgemeldet. Rufen wir diese Funktion beispielsweise auf mit:

myfunc(4,6)

erhalten wir als Rückmeldung:

10

Es besteht ferner die Möglichkeit, Standardwerte für die Parameter zu setzen, welche verwendet werden, falls der Funktionsaufruf ohne Parameter erfolgt.

myfunc <- function(x=3,y=7){ # Neue Funktion mit Standardwerten für die Parameter x und y
          z <- x+y           # Die Summe von x und y wird in z gespeichert
          return(z)          # z wird zurückgemeldet
          }

Rufen wird die Funktion ohne Parameter auf:

myfunc()

so werden die Standardwerte genutzt, und wir erhalten das Ergebnis

10

Rufen wir die Funktion mit Parametern auf, z.B.

myfunc(12,4)

so erhalten wir das Ergebnis

16


[Bearbeiten] Bedingungen

Innerhalb der Funktion können Variablenbedingungen mit dem if()-Befehl abgefragt werden. Der Aufruf erfolgt etwa so:

if(VARIABLENBEDINGUNG) {FUNKTIONSWEISE}

Innerhalb der Klammern des if()-Befehls werden die Variablenbedingungen gesetzt. Falls diese Bedingungen erfüllt sind, wird der Code innerhalb der geschweiften Klammern ausgeführt. Folgende Bedingungen können abgefragt werden:

Bedingungen
  ==    gleich 
  !=    ungleich 
  <    kleiner 
  <=    kleiner-gleich 
  >    größer 
  >=    größer-gleich 
Verknüpfungen
  &&    und 
  ||    oder 

Mit diesem Wissen könnten wir nun unsere Funktion etwas erweitern:

myfunc <- function(x=3,y=7){ 
          z <- x+y                      # Die Summe von x und y wird in z gespeichert
          if(z>20) {                    # Abfrage, ob die Summer größer als 20 ist
             z <- "wow, bist du gross"  # wenn ja, dann schreibe einen Text in das Objekt z
             }
          return(z)                     # z wird zurückgemeldet
          }


Mehrere Bedingungen können verknüpft werden, z.B. so:

myfunc <- function(x=3,y=7){ 
          if(x<0 & y<0) {         # Abfrage, ob x und y negativ sind
             x <- x*(-1)          # wenn ja, dann mache beide positiv
             y <- y*(-1)
             }
          z <- x+y                # Die Summe von x und y wird in z gespeichert
          if(z==0 | z>50)  {      # Abfrage, ob z gleich 0 oder größer 50 ist
            z <- "Summe ist 0 oder größer 50" # wenn ja, schreibe einen Text...
            }
          return(z)               # z wird zurückgemeldet
          }

[Bearbeiten] Schleifen

Mit Schleifen können wir gewisse Textstellen in unserer Funktion beliebig bis unendlich oft wiederholen und uns somit Unmengen von Arbeit sparen:

 Strecke <- function(x=10,y=x) {
   while(a=0,a<=,a++) {
     z=z+x                         # z wird zu z+x
     z=z+y                         # z wird zu z+y
   }
   return(z)
 }                    # z wird zurückgemeldet

[Bearbeiten] C++

[Bearbeiten] siehe auch

[Bearbeiten] Literatur

[Bearbeiten] Weblinks

[Bearbeiten] Inhaltsverzeichnis

Persönliche Werkzeuge