diff --git a/fr-fr/r-fr.html.markdown b/fr-fr/r-fr.html.markdown
index d6879c1f..3f225a0f 100644
--- a/fr-fr/r-fr.html.markdown
+++ b/fr-fr/r-fr.html.markdown
@@ -9,9 +9,9 @@ filename: learnr-fr.r
---
R est un langage de programmation statistique. Il dispose de nombreuses
-librairies pour le téléchargement et le nettoyage d'ensembles de données,
+bibliothèques pour le téléchargement et le nettoyage d'ensembles de données,
l'exécution de procédures statistiques, et la réalisation de graphiques.
-On peut également exécuter les commmandes `R` au sein d'un document LaTeX.
+On peut également exécuter des commmandes `R` au sein d'un document LaTeX.
```r
@@ -19,9 +19,11 @@ On peut également exécuter les commmandes `R` au sein d'un document LaTeX.
# Les commentaires commencent avec des symboles numériques.
# Il n'est pas possible de faire des commentaires multilignes,
-# mais on peut superposer plusieurs commentaires comme ceci.
+# mais on peut placer plusieurs commentaires les uns en dessous
+# des autres comme ceci.
-# Sur Windows ou Mac, taper COMMAND-ENTER pour exécuter une ligne
+# Sur Mac, taper COMMAND-ENTER pour exécuter une ligne
+# et sur Windows taper CTRL-ENTER
@@ -43,7 +45,7 @@ head(rivers) # donne un aperçu des données
length(rivers) # Combien de rivers ont été mesurées ?
# 141
-summary(rivers) # Quels sont les principales données statistiques ?
+summary(rivers) # Quelles sont les principales données statistiques ?
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 135.0 310.0 425.0 591.2 680.0 3710.0
@@ -99,7 +101,7 @@ stem(log(rivers)) # Notez que les données ne sont ni normales
# 80 |
# 82 | 2
-# Fais un histogramme :
+# Fait un histogramme :
hist(rivers, col="#333333", border="white", breaks=25) # amusez-vous avec ces paramètres
hist(log(rivers), col="#333333", border="white", breaks=25) # vous ferez plus de tracés plus tard
@@ -110,7 +112,7 @@ plot(discoveries, col="#333333", lwd=3, xlab="Year",
plot(discoveries, col="#333333", lwd=3, type = "h", xlab="Year",
main="Number of important discoveries per year")
-# Plutôt que de laisser l'ordre par défaut (par années)
+# Plutôt que de laisser l'ordre par défaut (par année)
# Nous pourrions aussi trier pour voir ce qu'il y a de typique
sort(discoveries)
# [1] 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2
@@ -142,7 +144,7 @@ summary(discoveries)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 0.0 2.0 3.0 3.1 4.0 12.0
-# Lance un dès plusieurs fois
+# Lance un dé plusieurs fois
round(runif(7, min=.5, max=6.5))
# 1 4 6 1 4 6 4
# Vos numéros diffèreront des miens à moins que nous mettions
@@ -164,11 +166,11 @@ rnorm(9)
# les entiers, les numériques, les caractères, les logiques, et les facteurs.
# LES ENTIERS
-# Les entiers de mémoire longue sont écrit avec L
+# Les entiers de type long sont écrits avec L
5L # 5
class(5L) # "integer"
# (Essayez ?class pour plus d'informations sur la fonction class().)
-# Avec R, chaque valeur seule, comme 5L, est considéré comme
+# Avec R, chaque valeur seule, comme 5L, est considérée comme
# un vecteur de longueur 1
length(5L) # 1
# On peut avoir un vecteur d'entiers avec une longueur > 1 :
@@ -191,7 +193,7 @@ c(3,3,3,2,2,1) # 3 3 3 2 2 1
class(Inf) # "numeric"
class(-Inf) # "numeric"
# Vous pouvez utiliser "Inf", par exemple, dans integrate(dnorm, 3, Inf);
-# Ça permet d'éviter des tableaux Z-scores.
+# Ça permet d'éviter de réaliser une table de la loi normale.
# ARITHMÉTIQUES DE BASE
# Vous pouvez faire de l'arithmétique avec des nombres
@@ -233,7 +235,7 @@ letters
# [20] "t" "u" "v" "w" "x" "y" "z"
month.abb # "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
-# LES TYPES LOGIQUES
+# LES TYPES BOOLÉENS
# En R, un "logical" est un booléen
class(TRUE) # "logical"
class(FALSE) # "logical"
@@ -256,15 +258,16 @@ c('Z', 'o', 'r', 'r', 'o') == "Zorro" # FALSE FALSE FALSE FALSE FALSE
c('Z', 'o', 'r', 'r', 'o') == "Z" # TRUE FALSE FALSE FALSE FALSE
# LES FACTEURS
-# La classe facteur sert pour les données catégorielles
-# les facteurs peuvent être ordonnés (comme les niveaux de
-# catégorie d'enfants)
-# ou non ordonnés (comme le sexe)
+# Les facteurs sont généralement utilisés pour y stocker des
+# variables qualitatives (catégorielles).
+# Les facteurs peuvent être ordonnés (comme le niveau scolaire
+# des enfants) ou non ordonnés (comme le sexe)
factor(c("female", "female", "male", NA, "female"))
# female female male female
# Les niveaux : female male
-# Les "levels" sont les valeurs que les données catégorielles
-# peuvent prendre
+# Les facteurs possèdent un attribut appelé niveau ("level").
+# Les niveaux sont des vecteurs contenant toutes les valeurs
+# que peuvent prendre les données catégorielles.
# Notez que les données manquantes n'entrent pas dans le niveau
levels(factor(c("male", "male", "female", NA, "female"))) # "female" "male"
# Si le vecteur de facteurs a une longueur 1, ses niveaux seront
@@ -288,8 +291,8 @@ parakeet
# =>
# NULL
-# LES CONTRAINTES DE TYPES
-# Les contraintes de types servent à forcer une valeur à prendre
+# LES CONVERSIONS DE TYPES
+# Les conversions de types servent à forcer une valeur à prendre
# un type différent
as.character(c(6, 8)) # "6" "8"
as.logical(c(1,0,1,1)) # TRUE FALSE TRUE TRUE
@@ -304,7 +307,7 @@ as.numeric("Bilbo")
# NAs est introduit par coercition
# Notez également : ce n'étaient que des types de données basiques
-# Il y a beaucoup d'autres types de données, comme pour les dates,
+# Il y a beaucoup d'autres types de données, comme les dates,
# les séries temporelles, etc ...
@@ -321,7 +324,7 @@ as.numeric("Bilbo")
# LES VARIABLES
# Beaucoup de façons d'assigner des choses :
-x = 5 # c'est possible
+x = 5 # c'est correct
y <- "1" # c'est préféré
TRUE -> z # ça marche mais c'est bizarre
@@ -337,11 +340,11 @@ while (a > 4) {
a <- a - 1
}
# Gardez à l'esprit que les boucles for et while s'exécutent lentement
-# en R
-# Des opérations sur des vecteurs entiers (ex une ligne entière,
+# en R.
+# Des opérations sur la totalité d'un vecteur (ex une ligne entière,
# une colonne entière),
# ou les fonctions de type apply() (nous en parlerons plus tard),
-# sont préférées
+# sont préférées.
# IF/ELSE
# Encore une fois assez standard
@@ -356,7 +359,7 @@ if (4 > 3) {
# LES FONCTIONS
# se définissent comme ceci :
jiggle <- function(x) {
- x = x + rnorm(1, sd=.1) #add in a bit of (controlled) noise
+ x = x + rnorm(1, sd=.1) # ajoute un peu de bruit (contrôlé)
return(x)
}
# Appelées comme n'importe quelles autres fonction R :
@@ -366,7 +369,7 @@ jiggle(5) # 5±ε. After set.seed(2716057), jiggle(5)==5.005043
##########################################################################
# Les structures de données : les vecteurs, les matrices,
-# les data frame et les tableaux
+# les data frames et les tableaux
##########################################################################
# À UNE DIMENSION
@@ -387,7 +390,7 @@ which(vec %% 2 == 0) # 1 3
# Récupèrer seulement les premières ou dernières entrées du vecteur,
head(vec, 1) # 8
tail(vec, 2) # 10 11
-# ou trouver si un certaine valeur est dans le vecteur
+# ou vérifier si un certaine valeur est dans le vecteur
any(vec == 10) # TRUE
# Si un index "dépasse" vous obtiendrez NA :
vec[6] # NA
@@ -398,7 +401,7 @@ length(vec) # 4
vec * 4 # 16 20 24 28
vec[2:3] * 5 # 25 30
any(vec[2:3] == 8) # FALSE
-# Et R a beaucoup de fonctions préconstruites pour résumer les vecteurs
+# Et R a beaucoup de méthodes statistiques pré-construites pour les vecteurs :
mean(vec) # 9.5
var(vec) # 1.666667
sd(vec) # 1.290994
@@ -425,7 +428,7 @@ mat
# Différemment du vecteur, la classe d'une matrice est "matrix",
# peut importe ce qu'elle contient
class(mat) # => "matrix"
-# Demander la première ligne
+# Récupérer la première ligne
mat[1,] # 1 4
# Réaliser une opération sur la première colonne
3 * mat[,1] # 3 6 9
@@ -502,13 +505,13 @@ dim(students) # 6 3
# stringsAsFactors = FALSE quand vous créer la data.frame
?data.frame
-# Il y a plusieurs façons de subdiviser les trames de données
+# Il y a plusieurs façons de subdiviser les data frames,
# toutes subtilement différentes
students$year # 3 2 2 1 0 -1
students[,2] # 3 2 2 1 0 -1
students[,"year"] # 3 2 2 1 0 -1
-# Une version augmentée de la structure data.frame est data.table
+# Une version améliorée de la structure data.frame est data.table.
# Si vous travaillez avec des données volumineuses ou des panels, ou avez
# besoin de fusionner quelques ensembles de données, data.table peut être
# un bon choix. Ici un tour éclair :
@@ -601,15 +604,15 @@ students[students$house != "G",]
# MULTI-DIMENSIONNELLE (TOUS ÉLÉMENTS D'UN TYPE)
-# Les arrays créent des tableaux de n dimensions
-# Tous les éléments doivent être du même type
+# Les arrays créent des tableaux de n dimensions.
+# Tous les éléments doivent être du même type.
# Vous pouvez faire un tableau à 2 dimensions (une sorte de matrice)
array(c(c(1,2,4,5),c(8,9,3,6)), dim=c(2,4))
# =>
# [,1] [,2] [,3] [,4]
# [1,] 1 4 8 3
# [2,] 2 5 9 6
-# Vous pouvez utiliser array pour faire des matrices à 3 dimensions aussi
+# Vous pouvez aussi utiliser array pour faire des matrices à 3 dimensions :
array(c(c(c(2,300,4),c(8,9,0)),c(c(5,60,0),c(66,7,847))), dim=c(3,2,2))
# =>
# , , 1
@@ -629,7 +632,7 @@ array(c(c(c(2,300,4),c(8,9,0)),c(c(5,60,0),c(66,7,847))), dim=c(3,2,2))
# LES LISTES (MULTI-DIMENSIONNELLES, ÉVENTUELLEMMENT DÉCHIRÉES,
# DE DIFFÉRENTS TYPES)
-# Enfin R a des listes (de vecteurs)
+# Enfin, R a des listes (de vecteurs)
list1 <- list(time = 1:40)
list1$price = c(rnorm(40,.5*list1$time,4)) # random
list1
@@ -644,10 +647,10 @@ list1[[1]] # encore une façon différente
list1$price[4]
# Les listes ne sont pas les structures de données les plus efficaces
-# à utiliser avec R;
+# à utiliser avec R ;
# À moins d'avoir une très bonne raison, vous devriez utiliser data.frames
# Les listes sont souvent retournées par des fonctions qui effectuent
-# des régressions linéaires
+# des régressions linéaires.
##########################################
# La famille de fonction apply()
@@ -674,7 +677,7 @@ apply(mat, MAR = 2, jiggle)
# Ne soyez pas trop intimidé ; tout le monde reconnaît que c'est un peu déroutant
-# Le paque plyr vise à remplacer (et améliorer !) la famille *apply().
+# Le paquet plyr vise à remplacer (et améliorer !) la famille *apply().
install.packages("plyr")
require(plyr)
?plyr
@@ -704,7 +707,7 @@ write.csv(pets, "pets2.csv") # to make a new .csv file
# Les tracés
################
-# LES FONCTIONS DE TRACÉS PRÉCONSTRUITES
+# LES FONCTIONS DE TRACÉ PRÉCONSTRUITES
# Les diagrammes de dispersion !
plot(list1$time, list1$price, main = "fake data")
# Les régressions !
@@ -737,7 +740,7 @@ pp + geom_point()
```
-## Comment j'obtiens R ?
+## Comment obtenir R ?
* Obtiens R et R GUI depuis [http://www.r-project.org/](http://www.r-project.org/)
* [RStudio](http://www.rstudio.com/ide/) est un autre GUI