5.1 Funktioner i R
Standardinstallationen af R indeholder mange funktioner til forskellige opgaver, fra simple matematiske beregninger til komplicerede statistiske modeller og grafer. Nogle funktioner er nemme at bruge, mens andre kræver mere arbejde. Alle funktioner har dog samme anatomi, som vist nedenfor for funktionen [mean()](https://rdrr.io/r/base/mean.html):
mean(x)Alle funktioner begynder med funktionens navn. I eksemplet ovenfor hedder funktionen mean. Efter navnet følger en parentes, som indeholder alle funktionens argumenter. Et argument er information, som funktionen skal have. Funktionen [mean()](https://rdrr.io/r/base/mean.html) har ét obligatorisk argument (det skal angives, for at funktionen kan bruges), nemlig x. Argumenter specificeres med et lighedstegn (=). I dette tilfælde er argumentet x den vektor, som vi vil anvende funktionen [mean()](https://rdrr.io/r/base/mean.html) på. Lad os oprette en vektor, som vi kalder my_numbers, og anvende funktionen [mean()](https://rdrr.io/r/base/mean.html) på den:
my_numbers <- c(1, 2, 3, 4)
mean(x=my_numbers)[1] 2.5Funktionen [mean()](https://rdrr.io/r/base/mean.html) har også argumentet na.rm, som angiver, om beregningen skal ignorere manglende værdier. Manglende værdier angives som NA (Not Available) i R. Funktionen [mean()](https://rdrr.io/r/base/mean.html) tolererer ikke manglende værdier, medmindre det specificeres eksplicit med argumentet na.rm, som betyder “NA remove”. Vi kan afprøve dette ved at indføre en manglende værdi i vores vektor og bruge funktionen på samme måde igen:
my_numbers <- c(1, 2, 3, NA)
mean(x=my_numbers)[1] NAResultatet bliver NA, hvilket betyder, at resultatet også mangler! Det skyldes, at argumentet na.rm som standard er sat til FALSE. Så fjernes NA ikke, og derfor kan gennemsnittet ikke beregnes. Nu gør vi et nyt forsøg, hvor vi beder R om at fjerne NA:
my_numbers <- c(1, 2, 3, NA)
mean(x=my_numbers, na.rm=TRUE)[1] 2Nu virker det! Argumentet na.rm har en default-værdi, dvs. en grundindstilling, der bruges, hvis brugeren ikke angiver andet. For na.rm er grundindstillingen FALSE, hvilket forklarer, hvorfor vi ikke kunne udføre beregningen på my_numbers, som indeholdt NA, uden at angive na.rm=TRUE.
Bemærk følgende:
- En funktion kan have mange argumenter, og de adskilles med komma, når funktionen bruges.
- Hvert argument i funktionen har et navn.
- Vi bruger lighedstegn til at angive, hvad argumentet skal være. For eksempel
na.rm=TRUE.
Vi kan faktisk angive værdier for et argument uden at skrive argumentets navn. Her beregner vi gennemsnittet uden at angive, at my_numbers er argumentet x.
my_numbers <- c(1, 2, 3, 4)
mean(my_numbers)[1] 2.5Hvis du ikke angiver argumenternes navne, skal du angive dem i præcis den rækkefølge, som funktionen har. Rækkefølgen kan du finde i hjælpedokumentationen. Hvis du springer over at skrive argumenternes navne, matcher R dine værdier med funktionens argumenter efter rækkefølge.
?meanmean(x, trim = 0, na.rm = FALSE, ...)Af dokumentationen fremgår det, at det første argument er x, det andet argument er trim, og det tredje argument er na.rm. Det fremgår også, at x ikke har nogen default-værdi, hvilket derimod findes for trim (trim=0) og na.rm (na.rm=FALSE). Disse default-indstillinger bruges, hvis brugeren ikke angiver andet.
Default for argumenter
Argumenter med default-værdier er ikke obligatoriske at angive, når en funktion bruges. Disse argumenter får deres default-værdier, hvis brugeren ikke angiver andet.
Du kan også bruge funktionen args() til at se, hvilke argumenter en funktion har. Her undersøger vi argumenterne i funktionen [rnorm()](https://rdrr.io/r/stats/Normal.html):
args(rnorm)function (n, mean = 0, sd = 1)Den komplette dokumentation for mean ser sådan ud:

Allerførst til venstre i dokumentationen ses følgende: mean {base}
mean er funktionens navn, og base er den pakke, der indeholder funktionen.
Derefter kommer overskriften Arithmetic Mean, efterfulgt af Description. Under Description findes en beskrivelse af funktionen. Under overskriften Usage får du at vide, hvilke argumenter funktionen har, og hvad deres default-værdier er. Under overskriften Arguments får du forklaringer på, hvad der forventes af argumenterne. Under overskriften Value fremgår det, hvad funktionen forventes at gøre. Allernederst kan du se eksempler på brug af funktionen.
5.2 Funktioner i funktioner
R giver dig mulighed for at indlejre funktioner i funktioner, hvilket er meget nyttigt. Se følgende eksempel, hvor vi bruger tre forskellige funktioner ([c()](https://rdrr.io/r/base/c.html), [mean()](https://rdrr.io/r/base/mean.html), [round()](https://rdrr.io/r/base/Round.html)) i tre trin:
## c() opretter en vektor
my_values = c(10, 30.5, 99.43, 98.3)
## mean() beregner gennemsnittet af vektoren
my_mean <- mean(my_values)
## round() afrunder til nærmeste heltal
my_result <- round(my_mean)
## Se resultat
my_result[1] 60Du kan indlejre disse funktioner i hinanden på følgende måde:
my_result <- round(mean(c(10, 30.5, 99.43, 98.3)))
my_result[1] 60Når du indlejrer en funktion i en anden funktion, begynder R med den inderste funktion og arbejder sig trinvis ud til den yderste. I dette eksempel betyder det, at [c()](https://rdrr.io/r/base/c.html) køres først, og [round()](https://rdrr.io/r/base/Round.html) køres sidst.
5.2.1 Tips
Brug argumenternes navne, når du bruger dem. Det gør det lettere for både dig selv og andre at læse din kode, og det kan forebygge uventede fejl.
5.3 Almindelige funktioner i base R
Standardinstallationen af R kommer med mange nyttige funktioner. Nogle af dem er listet nedenfor. Husk, at mange af disse funktioner mere eller mindre er blevet opgivet til fordel for nyere og bedre funktioner.
5.3.1 Generelle funktioner i 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 Matematiske operationer
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 Regressionsmodeller
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 Statistiske beregninger
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