5.1 Funktionen in R
Die Standardinstallation von R enthält zahlreiche Funktionen für die unterschiedlichsten Aufgaben, von einfachen mathematischen Berechnungen bis hin zu komplexen statistischen Modellen und Grafiken. Manche Funktionen sind einfach zu verwenden, andere erfordern mehr Aufwand. Alle Funktionen haben jedoch denselben Aufbau, wie hier am Beispiel der Funktion [mean()](https://rdrr.io/r/base/mean.html) gezeigt wird:
mean(x)Jede Funktion beginnt mit ihrem Namen. Im obigen Beispiel heißt die Funktion mean. Auf den Namen folgt eine Klammer, die alle Argumente der Funktion enthält. Ein Argument ist eine Information, die die Funktion benötigt. Die Funktion [mean()](https://rdrr.io/r/base/mean.html) hat ein obligatorisches Argument (es muss angegeben werden, damit die Funktion verwendet werden kann), nämlich x. Argumente werden mit einem Gleichheitszeichen (=) angegeben. In diesem Fall ist das Argument x der Vektor, auf den wir die Funktion [mean()](https://rdrr.io/r/base/mean.html) anwenden wollen. Erstellen wir einen Vektor namens my_numbers und wenden die Funktion [mean()](https://rdrr.io/r/base/mean.html) darauf an:
my_numbers <- c(1, 2, 3, 4)
mean(x=my_numbers)[1] 2.5Die Funktion [mean()](https://rdrr.io/r/base/mean.html) hat außerdem das Argument na.rm, das festlegt, ob die Berechnung fehlende Werte ignorieren soll. Fehlende Werte werden in R als NA (Not Available) dargestellt. Die Funktion [mean()](https://rdrr.io/r/base/mean.html) toleriert keine fehlenden Werte, sofern dies nicht ausdrücklich mit dem Argument na.rm angegeben wird, das für „NA remove“ steht. Wir können das testen, indem wir einen fehlenden Wert in unseren Vektor einfügen und die Funktion erneut auf dieselbe Weise anwenden:
my_numbers <- c(1, 2, 3, NA)
mean(x=my_numbers)[1] NADas Ergebnis ist NA, das heißt, auch das Ergebnis fehlt! Das liegt daran, dass das Argument na.rm standardmäßig auf FALSE gesetzt ist. NA wird dann nicht entfernt, sodass der Mittelwert nicht berechnet werden kann. Nun versuchen wir es noch einmal und weisen R an, NA zu entfernen:
my_numbers <- c(1, 2, 3, NA)
mean(x=my_numbers, na.rm=TRUE)[1] 2Jetzt funktioniert es! Das Argument na.rm hat einen Default-Wert, also eine Grundeinstellung, die verwendet wird, wenn der Benutzer nichts anderes angibt. Für na.rm ist die Grundeinstellung FALSE. Das erklärt, warum wir die Berechnung für my_numbers, das NA enthielt, nicht durchführen konnten, ohne na.rm=TRUE anzugeben.
Beachten Sie Folgendes:
- Eine Funktion kann viele Argumente haben; diese werden beim Aufruf der Funktion durch Kommas getrennt.
- Jedes Argument der Funktion hat einen Namen.
- Mit dem Gleichheitszeichen legen wir fest, welchen Wert das Argument annehmen soll, zum Beispiel
na.rm=TRUE.
Wir können Werte für ein Argument tatsächlich auch angeben, ohne den Namen des Arguments zu schreiben. Hier berechnen wir den Mittelwert, ohne anzugeben, dass my_numbers das Argument x ist.
my_numbers <- c(1, 2, 3, 4)
mean(my_numbers)[1] 2.5Wenn Sie die Namen der Argumente nicht angeben, müssen Sie die Argumente in genau der Reihenfolge angeben, die die Funktion vorsieht. Die Reihenfolge können Sie in der Hilfedokumentation nachsehen. Wenn Sie die Namen der Argumente weglassen, ordnet R Ihre Werte den Argumenten der Funktion der Reihe nach zu.
?meanmean(x, trim = 0, na.rm = FALSE, ...)Aus der Dokumentation geht hervor, dass das erste Argument x, das zweite trim und das dritte na.rm ist. Außerdem ist ersichtlich, dass x keinen Default-Wert hat, trim (trim=0) und na.rm (na.rm=FALSE) dagegen schon. Diese Default-Einstellungen werden verwendet, wenn der Benutzer nichts anderes angibt.
Default-Werte für Argumente
Argumente mit Default-Werten müssen beim Aufruf einer Funktion nicht angegeben werden. Diese Argumente erhalten ihre Default-Werte, sofern der Benutzer nichts anderes angibt.
Sie können auch die Funktion args() verwenden, um zu sehen, welche Argumente eine Funktion hat. Hier prüfen wir die Argumente der Funktion [rnorm()](https://rdrr.io/r/stats/Normal.html):
args(rnorm)function (n, mean = 0, sd = 1)Die vollständige Dokumentation für mean sieht folgendermaßen aus:

Ganz oben links in der Dokumentation steht: mean {base}
mean ist der Name der Funktion und base ist das Package, das die Funktion enthält.
Danach folgt die Überschrift Arithmetic Mean und anschließend Description. Unter Description findet sich eine Beschreibung der Funktion. Unter der Überschrift Usage erfahren Sie, welche Argumente die Funktion hat und welche Default-Werte sie haben. Unter der Überschrift Arguments wird erläutert, was von den Argumenten erwartet wird. Unter der Überschrift Value ist angegeben, was die Funktion zurückgeben soll. Ganz unten sehen Sie Beispiele für die Verwendung der Funktion.
5.2 Funktionen in Funktionen
R ermöglicht es, Funktionen in Funktionen zu verschachteln, was sehr nützlich ist. Betrachten Sie das folgende Beispiel, in dem wir drei verschiedene Funktionen ([c()](https://rdrr.io/r/base/c.html), [mean()](https://rdrr.io/r/base/mean.html), [round()](https://rdrr.io/r/base/Round.html)) in drei Schritten verwenden:
## c() erstellt einen Vektor
my_values = c(10, 30.5, 99.43, 98.3)
## mean() berechnet den Mittelwert des Vektors
my_mean <- mean(my_values)
## round() rundet auf die nächste ganze Zahl
my_result <- round(my_mean)
## Ergebnis anzeigen
my_result[1] 60Sie können diese Funktionen wie folgt ineinander verschachteln:
my_result <- round(mean(c(10, 30.5, 99.43, 98.3)))
my_result[1] 60Wenn Sie eine Funktion in eine andere Funktion verschachteln, beginnt R mit der innersten Funktion und arbeitet sich schrittweise zur äußersten vor. In diesem Beispiel bedeutet das, dass [c()](https://rdrr.io/r/base/c.html) zuerst und [round()](https://rdrr.io/r/base/Round.html) zuletzt ausgeführt wird.
5.2.1 Tipp
Verwenden Sie die Namen der Argumente, wenn Sie sie angeben. Das erleichtert Ihnen selbst und anderen das Lesen Ihres Codes und kann unerwartete Fehler vermeiden.
5.3 Häufig verwendete Funktionen in base R
Die Standardinstallation von R enthält viele nützliche Funktionen. Einige davon sind unten aufgeführt. Denken Sie daran, dass viele dieser Funktionen mehr oder weniger zugunsten neuerer und besserer Funktionen aufgegeben wurden.
5.3.1 Allgemeine Funktionen in base R
builtins() # List all built-in functions
options() # Set options to control how R computes & displays results
?NA # Help page on handling of missing data values
abs(x) # The absolute value of "x"
append() # Add elements to a vector
c(x) # A generic function which combines its arguments
cat(x) # Prints the arguments
cbind() # Combine vectors by row/column (cf. "paste" in Unix)
diff(x) # Returns suitably lagged and iterated differences
gl() # Generate factors with the pattern of their levels
grep() # Pattern matching
identical() # Test if 2 objects are *exactly* equal
jitter() # Add a small amount of noise to a numeric vector
julian() # Return Julian date
length(x) # Return no. of elements in vector x
ls() # List objects in current environment
mat.or.vec() # Create a matrix or vector
paste(x) # Concatenate vectors after converting to character
range(x) # Returns the minimum and maximum of x
rep(1,5) # Repeat the number 1 five times
rev(x) # List the elements of "x" in reverse order
seq(1,10,0.4) # Generate a sequence (1 -> 10, spaced by 0.4)
sequence() # Create a vector of sequences
sign(x) # Returns the signs of the elements of x
sort(x) # Sort the vector x
order(x) # list sorted element numbers of x
tolower(),toupper() # Convert string to lower/upper case letters
unique(x) # Remove duplicate entries from vector
system("cmd") # Execute "cmd" in operating system (outside of R)
vector() # Produces a vector of given length and mode
formatC(x) # Format x using 'C' style formatting specifications
floor(x), ceiling(x), round(x), signif(x), trunc(x) # rounding functions
Sys.getenv(x) # Get the value of the environment variable "x"
Sys.putenv(x) # Set the value of the environment variable "x"
Sys.time() # Return system time
Sys.Date() # Return system date
getwd() # Return working directory
setwd() # Set working directory
?files # Help on low-level interface to file system
list.files() # List files in a give directory
file.info() # Get information about files
## Built-in constants:
pi,letters,LETTERS # Pi, lower & uppercase letters, e.g. letters[7] = "g"
month.abb,month.name # Abbreviated & full names for months5.3.2 Mathematische Operationen
log(x),logb(),log10(),log2(),exp(),expm1(),log1p(),sqrt() # Fairly obvious
cos(),sin(),tan(),acos(),asin(),atan(),atan2() # Usual stuff
cosh(),sinh(),tanh(),acosh(),asinh(),atanh() # Hyperbolic functions
union(),intersect(),setdiff(),setequal() # Set operations
+,-,*,/,^,%%,%/% # Arithmetic operators
<,>,<=,>=,==,!= # Comparison operators
eigen() # Computes eigenvalues and eigenvectors
deriv() # Symbolic and algorithmic derivatives of simple expressions
integrate() # Adaptive quadrature over a finite or infinite interval.
sqrt(),sum()
?Control # Help on control flow statements (e.g. if, for, while)
?Extract # Help on operators acting to extract or replace subsets of vectors
?Logic # Help on logical operators
?Mod # Help on functions which support complex arithmetic in R
?Paren # Help on parentheses
?regex # Help on regular expressions used in R
?Syntax # Help on R syntax and giving the precedence of operators
?Special # Help on special functions related to beta and gamma functions5.3.3 Grafik
help(package=graphics) # List all graphics functions</em>
plot() # Generic function for plotting of R objects</em>
par() # Set or query graphical parameters</em>
curve(5*x^3,add=T) # Plot an equation as a curve</em>
points(x,y) # Add another set of points to an existing graph</em>
arrows() # Draw arrows [see errorbar script]</em>
abline() # Adds a straight line to an existing graph</em>
lines() # Join specified points with line segments</em>
segments() # Draw line segments between pairs of points</em>
hist(x) # Plot a histogram of x</em>
pairs() # Plot matrix of scatter plots</em>
matplot() # Plot columns of matrices</em>
?device # Help page on available graphical devices</em>
postscript() # Plot to postscript file</em>
pdf() # Plot to pdf file</em>
png() # Plot to PNG file</em>
jpeg() # Plot to JPEG file</em>
X11() # Plot to X window</em>
persp() # Draws perspective plot</em>
contour() # Contour plot</em>
image() # Plot an image</em>5.3.4 Regressionsmodelle
lm # Fit liner model</em>
glm # Fit generalised linear model</em>
nls # non-linear (weighted) least-squares fitting</em>
lqs # "library(MASS)" resistant regression</em>
optim # general-purpose optimisation</em>
optimize # 1-dimensional optimisation</em>
constrOptim # Constrained optimisation</em>
nlm # Non-linear minimisation</em>
nlminb # More robust (non-)constrained non-linear minimisation</em>5.3.5 Statistische Berechnungen
help(package=stats) # List all stats functions
?Chisquare # Help on chi-squared distribution functions
?Poisson # Help on Poisson distribution functions
help(package=survival) # Survival analysis
cor.test() # Perform correlation test
cumsum(); cumprod(); cummin(); cummax() # Cumuluative functions for vectors
density(x) # Compute kernel density estimates
ks.test() # Performs one or two sample Kolmogorov-Smirnov tests
loess(), lowess() # Scatter plot smoothing
mad() # Calculate median absolute deviation
mean(x), weighted.mean(x), median(x), min(x), max(x), quantile(x)
rnorm(), runif() # Generate random data with Gaussian/uniform distribution
splinefun() # Perform spline interpolation
smooth.spline() # Fits a cubic smoothing spline
sd() # Calculate standard deviation
summary(x) # Returns a summary of x: mean, min, max etc.
t.test() # Student's t-test
var() # Calculate variance
sample() # Random samples & permutations
ecdf() # Empirical Cumulative Distribution Function
qqplot() # quantile-quantile plot