Programmer en R
Programmer en R/Faire ses premiers pas
Cette section constitue une rapide introduction à R.
Manipuler des nombres.
On peut facilement réaliser les opérations standards dans R. 
> 1+1
[1] 2
> 2*3
[1] 6
> 2/3
[1] 0.6666667
> 2^3
[1] 8
Manipuler du texte.
Pour différencier les chaînes de caractères (ie le texte) des nombres, il suffit d'utiliser les guillemets. 
> "ceci est une chaîne de caractère"
[1] "ceci est une chaîne de caractère"
Enregistrer des données.
Pour assigner une valeur à un objet, on utilise l'opérateur codice_1
> x <- 5
On peut ensuite afficher la valeur : 
> print(x)
[1] 5
On peut aussi utiliser cet objet dans d'autres calculs : 
> x + 1
[1] 6
Vecteurs.
Un vecteur est une suite de valeur de même type. Par exemple, on peut avoir un vecteur de nombres ou un vecteur de chaînes de caractères. 
La fonction codice_2 permet de construire un vecteur. 
> prix <- c(1.90, 3.50, 14.90)
> prix
[1] 1.9 3.5 14.9
> fruit <- c("pomme", "poire", "fraise")
> fruit
[1] "pomme" "poire" "fraise"
On peut accéder à un élément du vecteur en utilisant les crochets et le numéro de l'élément. 
> fruit <- c("pomme", "poire", "fraise")
> fruit[1]
[1] "pomme"
> fruit[1:2]
[1] "pomme" "poire"
> fruit[1:3]
[1] "pomme" "poire" "fraise"
> fruit[c(1,3)]
[1] "pomme" "fraise"
Matrices.
Une matrice est formée à partir d'un vecteur, en précisant le nombre de lignes et/ou de colonnes. Par exemple :
> A <- matrix(c(1, 2, 3, 4, 5, 6), nrow=2)
> print(A)
 [,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> B <- array(1:6, dim = c(3, 2))
> print(B)
 [,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
On peut aussi assembler des vecteurs-ligne (row bind) :
> A <- rbind(c(1, 3, 5), c(2, 4, 6)); print(A)
 [,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
Les opérations algébriques élémentaires sont les suivantes :
> A %*% B # produit matriciel
 [,1] [,2]
[1,] 22 49
[2,] 28 64
> aperm(A, c(2, 1)) # transposition
 [,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
> A*A # produit terme à terme
 [,1] [,2] [,3]
[1,] 1 9 25
[2,] 4 16 36
Tableaux de données.
Souvent en statistiques, on manipule des données sous forme de tableaux. En R, les tableaux de données sont appelés codice_3.
> table_fruits <- data.frame(
+ fruit = c("pomme", "poire", "fraise"), 
+ prix = c(1.90, 3.50, 14.90)
> 
> table_fruits
 fruit prix
1 pomme 1.9
2 poire 3.5
3 fraise 14.9 
Pour accéder à la colonne prix, on peut utiliser : 
> table_fruits[,"prix"] 
[1] 1.9 3.5 14.9
> table_fruits[,2]
[1] 1.9 3.5 14.9
> table_fruits$prix 
[1] 1.9 3.5 14.9
Pour accéder à la deuxième ligne, on utilise la syntaxe des crochets : 
table_fruits[2,]
> table_fruits[2,]
 fruit prix
2 poire 3.5
Pour en savoir plus, sur la manière dont on manipule un tableau de données, on peut lire la section Manipuler un tableau de données.
Obtenir de l'aide.
On peut obtenir de l'aide sur une fonction avec la commande codice_5
> help("abs")
> help("^")
ou bien avec le point d'interrogation
> ?abs
Le point d'interrogation recherche dans toutes les librairies importées. Pour chercher dans toutes les librairies installées sur le système, on utilise codice_6
>??select
Installer et charger une librairie.
R contient de nombreuses librairies développées par la communauté. Pour installer une librairie, on utilise la fonction codice_7 et pour la charger dans R, on utilise la fonction codice_8. Par exemple, on peut installer et charger la librarie codice_9.
install.packages("dplyr")
library("dplyr")
L'opérateur tube.
Traditionnellement, les arguments d'une fonction sont mis entre parenthèse après le nom de la fonction et on peut composer les fonctions en imbriquant des fonctions dans des fonctions. Par exemple : 
> exp(5)
[1] 148.4132
> log(exp(5))
[1] 5
Lorsqu'on enchaîne de nombreuses fonctions, cette syntaxe peut poser des problèmes de lisibilité du code. L'opérateur tube codice_10 (ou ) a été introduit par le développeur Stefan Milton Bache dans la librairie codice_11. Cet opérateur est importé par défaut dans de nombreuses librairies comme codice_9 et permet de rendre le code plus lisible. Cet opérateur est très pratique lorsqu'on enchaîne plusieurs fonctions à la suite.
> 5 %>% exp()
[1] 148.4132
> 5 %>% exp() %>% log()
[1] 5

Photographie/Fabricants/Berkey Keystone/Keystone Twin-lens 409

Photographie/Fabricants/Berkey Keystone/Keystone Tele-lens 709

Atlas éolien/Installations/France
Le but est de lister les installations éoliennes (notamment celle de plus de 1 MW).
Actuellement, 1,3 GW sont installés en France selon le site suivi-eolien.com , selon le SER , et 3,03 GW selon FFE .

Programmer en R/Les fonctions statistiques de base

Moyenne, médiane, variance et écart-type.
Nom des fonctions.
R dispose de fonctions pour calculer les paramètres descriptifs d'une variable statistique :
La variance et l'écart-type correspondent a formula_1 et formula_2,
Attention : les fonctions dans R ne calculent pas directement la variance et l'écart-type, mais leurs estimateurs sans biais : formula_3 et formula_4
Ces fonctions ont une syntaxe similaire :
 "fonction" (x, …)
La variable "x" désigne un vecteur contenant les données que l'on souhaite traiter.
Les données consistent en des nombres entiers, réels ou complexes, le calcul étant également possible sur des dates.
Ces fonctions disposent de paramètres dont la description complète est donnée dans la documentation de R.
Exemples.
Le plus fréquemment, "x" est un vecteur, c'est le cas de l'exemple ci-dessous.
> x <- c(1, 6, 3, 4, 9, 6)
> mean (x)
[1] 4.833333
> median (x)
[1] 5
> var (x)
[1] 7.766667
> sd (x)
[1] 2.786874
La fonction codice_1 ne peut pas être utilisée sur un codice_2. Pour les autres fonctions, voilà ce que l'on obtient :
> df <- data.frame (A = c(1, 2, 7, 4), B = c(5, 2, 4, 1))
> mean (df)
 A B 
3.5 3.0 
> var (df)
 A B
A 7.0000000 -0.3333333
B -0.3333333 3.3333333
> sd (df)
 A B 
2.645751 1.825742 
La moyenne a donc été calculée sur chacune des colonnes du codice_2, le résultat est un vecteur, indexe par le nom des colonnes de "df". Si </code>m <- mean(df)</code>, on a alors "m"[1] = "m"['A'] = 3,5.
La fonction codice_4 calcule la matrice de covariance des colonnes de "df". Le résultat est une matrice dont on accède aux différents coefficients soit par leur numéro de ligne et de colonne, soit par les index 'A' et 'B'.
Pour l'écart-type, on obtient le vecteur correspondant à l'écart-type de chacune des colonnes de "df".
Pour terminer, ces fonctions permettent également des calculs sur des matrices :
> m <- matrix (c(1, 3, 4, 5, 6, 7, 7, 8), 4, 2)
> m
 [,1] [,2]
[1,] 1 6
[2,] 3 7
[3,] 4 7
[4,] 5 8
> mean (m)
[1] 5.125
> median (m)
[1] 5.5
> var (m)
 [,1] [,2]
[1,] 2.916667 1.3333333
[2,] 1.333333 0.6666667
> sd (m)
[1] 1.7078251 0.8164966
La moyenne et la médiane ont été calculées sur l'ensemble des coefficients de la matrice.
La fonction codice_4 calcule la matrice de covariance, et la fonction codice_6 calcule le vecteur des écart-type de chacune des colonne de "m".
Que faire si des valeurs sont absentes ?
Le paramètre codice_7 est un paramètre qui peut prendre les valeurs codice_8 ou codice_9, par défaut sa valeur est codice_9.
> x = c(1, 6, 3, NA, 9, 6)
> x
[1] 1 6 3 NA 9 6
> mean (x)
[1] NA
> mean (x, na.rm = TRUE)
[1] 5
> m = matrix (c(1, 3, 4, 5, 6, NA, 7, 8), 4, 2)
> m
 [,1] [,2]
[1,] 1 6
[2,] 3 NA
[3,] 4 7
[4,] 5 8
> var (m, na.rm = TRUE)
 [,1] [,2]
[1,] 4.333333 2
[2,] 2.000000 1
Le calcul codice_13 s'est avéré impossible, alors que la commande codice_14 a calculé la moyenne des cinq nombres 1, 6, 3, 9, 6. Dans le cas de la matrice "m", c'est toute la deuxième ligne qui a été retirée comme on peut le vérifier :
> m = matrix (c(1, 4, 5, 6, 7, 8), 3, 2)
> m
 [,1] [,2]
[1,] 1 6
[2,] 4 7
[3,] 5 8
> var (m)
 [,1] [,2]
[1,] 4.333333 2
[2,] 2.000000 1

Photographie/Fabricants/Ricoh/Ricoh SLX 500

Photographie/Traitements divers/Développement poussé