5.1 Les fonctions dans R
L'installation standard de R comprend de nombreuses fonctions destinées à des tâches variées, des calculs mathématiques simples aux modèles statistiques et graphiques complexes. Certaines fonctions sont simples à utiliser, tandis que d'autres demandent davantage d'efforts. Toutes les fonctions ont cependant la même anatomie, illustrée ci-dessous avec la fonction [mean()](https://rdrr.io/r/base/mean.html) :
mean(x)Toute fonction commence par son nom. Dans l'exemple ci-dessus, la fonction s'appelle mean. Le nom est suivi de parenthèses qui contiennent tous les arguments de la fonction. Un argument est une information dont la fonction a besoin. La fonction [mean()](https://rdrr.io/r/base/mean.html) possède un argument obligatoire (il doit être renseigné pour pouvoir utiliser la fonction), à savoir x. Les arguments sont spécifiés à l'aide du signe égal (=). Ici, l'argument x est le vecteur auquel nous voulons appliquer la fonction [mean()](https://rdrr.io/r/base/mean.html). Créons un vecteur que nous appelons my_numbers et appliquons-lui la fonction [mean()](https://rdrr.io/r/base/mean.html) :
my_numbers <- c(1, 2, 3, 4)
mean(x=my_numbers)[1] 2.5La fonction [mean()](https://rdrr.io/r/base/mean.html) possède également l'argument na.rm, qui indique si le calcul doit ignorer les valeurs manquantes. Dans R, les valeurs manquantes sont codées NA (Not Available). La fonction [mean()](https://rdrr.io/r/base/mean.html) ne tolère pas de valeurs manquantes, sauf si on le précise explicitement avec l'argument na.rm, qui signifie « NA remove ». Nous pouvons le vérifier en introduisant une valeur manquante dans notre vecteur et en utilisant à nouveau la fonction de la même manière :
my_numbers <- c(1, 2, 3, NA)
mean(x=my_numbers)[1] NALe résultat est NA, ce qui signifie que le résultat est lui aussi manquant ! Cela s'explique par le fait que l'argument na.rm vaut FALSE par défaut. Les NA ne sont alors pas éliminés, si bien que la moyenne ne peut pas être calculée. Faisons un nouvel essai en demandant à R de supprimer les NA :
my_numbers <- c(1, 2, 3, NA)
mean(x=my_numbers, na.rm=TRUE)[1] 2Cette fois, cela fonctionne ! L'argument na.rm possède une valeur par défaut, c'est-à-dire un réglage de base utilisé si l'utilisateur ne précise rien d'autre. Pour na.rm, la valeur par défaut est FALSE, ce qui explique pourquoi nous ne pouvions pas effectuer le calcul sur my_numbers, qui contenait un NA, sans spécifier na.rm=TRUE.
À retenir :
- Une fonction peut avoir de nombreux arguments, séparés par une virgule lors de l'appel de la fonction.
- Chaque argument de la fonction porte un nom.
- On utilise le signe égal pour spécifier la valeur de l'argument. Par exemple
na.rm=TRUE.
Il est en fait possible de fournir les valeurs d'un argument sans écrire son nom. Ici, nous calculons la moyenne sans indiquer que my_numbers correspond à l'argument x.
my_numbers <- c(1, 2, 3, 4)
mean(my_numbers)[1] 2.5Si vous n'indiquez pas le nom des arguments, vous devez les fournir exactement dans l'ordre défini par la fonction. Pour connaître cet ordre, vous pouvez consulter la documentation d'aide. Si vous omettez le nom des arguments, R associe vos valeurs aux arguments de la fonction selon leur position.
?meanmean(x, trim = 0, na.rm = FALSE, ...)La documentation indique que le premier argument est x, le deuxième trim et le troisième na.rm. On y voit aussi que x n'a pas de valeur par défaut, contrairement à trim (trim=0) et à na.rm (na.rm=FALSE). Ces valeurs par défaut seront utilisées si l'utilisateur ne spécifie rien d'autre.
Valeurs par défaut des arguments
Les arguments dotés d'une valeur par défaut n'ont pas besoin d'être spécifiés lors de l'utilisation d'une fonction. Ils prendront leur valeur par défaut si l'utilisateur n'indique rien d'autre.
Vous pouvez aussi utiliser la fonction args() pour voir quels arguments possède une fonction. Ici, nous vérifions les arguments de la fonction [rnorm()](https://rdrr.io/r/stats/Normal.html) :
args(rnorm)function (n, mean = 0, sd = 1)La documentation complète de mean se présente comme suit :

Tout en haut à gauche de la documentation figure la mention suivante : mean {base}
mean est le nom de la fonction et base est le package qui contient la fonction.
Vient ensuite le titre Arithmetic Mean, suivi de Description. La rubrique Description contient une description de la fonction. La rubrique Usage indique les arguments de la fonction et leurs valeurs par défaut. La rubrique Arguments explique ce qui est attendu pour chaque argument. La rubrique Value précise ce que la fonction est censée renvoyer. Tout en bas, vous trouverez des exemples d'utilisation de la fonction.
5.2 Des fonctions dans des fonctions
R vous permet d'imbriquer des fonctions dans d'autres fonctions, ce qui est très utile. Voyez l'exemple suivant, où nous utilisons trois fonctions différentes ([c()](https://rdrr.io/r/base/c.html), [mean()](https://rdrr.io/r/base/mean.html), [round()](https://rdrr.io/r/base/Round.html)) en trois étapes :
## c() crée un vecteur
my_values = c(10, 30.5, 99.43, 98.3)
## mean() calcule la moyenne du vecteur
my_mean <- mean(my_values)
## round() arrondit à l'entier le plus proche
my_result <- round(my_mean)
## Afficher le résultat
my_result[1] 60Vous pouvez imbriquer ces fonctions les unes dans les autres, comme suit :
my_result <- round(mean(c(10, 30.5, 99.43, 98.3)))
my_result[1] 60Lorsque vous imbriquez une fonction dans une autre, R commence par la fonction la plus interne et progresse pas à pas jusqu'à la plus externe. Dans cet exemple, cela signifie que [c()](https://rdrr.io/r/base/c.html) est exécutée en premier et [round()](https://rdrr.io/r/base/Round.html) en dernier.
5.2.1 Conseil
Utilisez le nom des arguments lorsque vous les employez. Cela facilite la lecture de votre code, pour vous comme pour les autres, et peut éviter des erreurs inattendues.
5.3 Fonctions courantes de base R
L'installation standard de R est livrée avec de nombreuses fonctions utiles. Certaines d'entre elles sont listées ci-dessous. Gardez à l'esprit que bon nombre de ces fonctions ont été plus ou moins abandonnées au profit de fonctions plus récentes et plus performantes.
5.3.1 Fonctions générales de 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 Opérations mathématiques
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 Graphiques
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 Modèles de régression
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 Calculs statistiques
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