Refactor r french translation

This commit is contained in:
Chtiprog 2015-05-18 00:03:52 -03:00
parent a6c01bf515
commit a0ca5283d6

View File

@ -9,9 +9,9 @@ filename: learnr-fr.r
--- ---
R est un langage de programmation statistique. Il dispose de nombreuses 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. 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 ```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. # Les commentaires commencent avec des symboles numériques.
# Il n'est pas possible de faire des commentaires multilignes, # 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 ? length(rivers) # Combien de rivers ont été mesurées ?
# 141 # 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. # Min. 1st Qu. Median Mean 3rd Qu. Max.
# 135.0 310.0 425.0 591.2 680.0 3710.0 # 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 | # 80 |
# 82 | 2 # 82 | 2
# Fais un histogramme : # Fait un histogramme :
hist(rivers, col="#333333", border="white", breaks=25) # amusez-vous avec ces paramètres 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 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", plot(discoveries, col="#333333", lwd=3, type = "h", xlab="Year",
main="Number of important discoveries per 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 # Nous pourrions aussi trier pour voir ce qu'il y a de typique
sort(discoveries) 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 # [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. # Min. 1st Qu. Median Mean 3rd Qu. Max.
# 0.0 2.0 3.0 3.1 4.0 12.0 # 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)) round(runif(7, min=.5, max=6.5))
# 1 4 6 1 4 6 4 # 1 4 6 1 4 6 4
# Vos numéros diffèreront des miens à moins que nous mettions # 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 numériques, les caractères, les logiques, et les facteurs.
# LES ENTIERS # LES ENTIERS
# Les entiers de mémoire longue sont écrit avec L # Les entiers de type long sont écrits avec L
5L # 5 5L # 5
class(5L) # "integer" class(5L) # "integer"
# (Essayez ?class pour plus d'informations sur la fonction class().) # (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 # un vecteur de longueur 1
length(5L) # 1 length(5L) # 1
# On peut avoir un vecteur d'entiers avec une longueur > 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"
class(-Inf) # "numeric" class(-Inf) # "numeric"
# Vous pouvez utiliser "Inf", par exemple, dans integrate(dnorm, 3, Inf); # 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 # ARITHMÉTIQUES DE BASE
# Vous pouvez faire de l'arithmétique avec des nombres # Vous pouvez faire de l'arithmétique avec des nombres
@ -233,7 +235,7 @@ letters
# [20] "t" "u" "v" "w" "x" "y" "z" # [20] "t" "u" "v" "w" "x" "y" "z"
month.abb # "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec" 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 # En R, un "logical" est un booléen
class(TRUE) # "logical" class(TRUE) # "logical"
class(FALSE) # "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 c('Z', 'o', 'r', 'r', 'o') == "Z" # TRUE FALSE FALSE FALSE FALSE
# LES FACTEURS # LES FACTEURS
# La classe facteur sert pour les données catégorielles # Les facteurs sont généralement utilisés pour y stocker des
# les facteurs peuvent être ordonnés (comme les niveaux de # variables qualitatives (catégorielles).
# catégorie d'enfants) # Les facteurs peuvent être ordonnés (comme le niveau scolaire
# ou non ordonnés (comme le sexe) # des enfants) ou non ordonnés (comme le sexe)
factor(c("female", "female", "male", NA, "female")) factor(c("female", "female", "male", NA, "female"))
# female female male <NA> female # female female male <NA> female
# Les niveaux : female male # Les niveaux : female male
# Les "levels" sont les valeurs que les données catégorielles # Les facteurs possèdent un attribut appelé niveau ("level").
# peuvent prendre # 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 # Notez que les données manquantes n'entrent pas dans le niveau
levels(factor(c("male", "male", "female", NA, "female"))) # "female" "male" levels(factor(c("male", "male", "female", NA, "female"))) # "female" "male"
# Si le vecteur de facteurs a une longueur 1, ses niveaux seront # Si le vecteur de facteurs a une longueur 1, ses niveaux seront
@ -288,8 +291,8 @@ parakeet
# => # =>
# NULL # NULL
# LES CONTRAINTES DE TYPES # LES CONVERSIONS DE TYPES
# Les contraintes de types servent à forcer une valeur à prendre # Les conversions de types servent à forcer une valeur à prendre
# un type différent # un type différent
as.character(c(6, 8)) # "6" "8" as.character(c(6, 8)) # "6" "8"
as.logical(c(1,0,1,1)) # TRUE FALSE TRUE TRUE as.logical(c(1,0,1,1)) # TRUE FALSE TRUE TRUE
@ -304,7 +307,7 @@ as.numeric("Bilbo")
# NAs est introduit par coercition # NAs est introduit par coercition
# Notez également : ce n'étaient que des types de données basiques # 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 ... # les séries temporelles, etc ...
@ -321,7 +324,7 @@ as.numeric("Bilbo")
# LES VARIABLES # LES VARIABLES
# Beaucoup de façons d'assigner des choses : # 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é y <- "1" # c'est préféré
TRUE -> z # ça marche mais c'est bizarre TRUE -> z # ça marche mais c'est bizarre
@ -337,11 +340,11 @@ while (a > 4) {
a <- a - 1 a <- a - 1
} }
# Gardez à l'esprit que les boucles for et while s'exécutent lentement # Gardez à l'esprit que les boucles for et while s'exécutent lentement
# en R # en R.
# Des opérations sur des vecteurs entiers (ex une ligne entière, # Des opérations sur la totalité d'un vecteur (ex une ligne entière,
# une colonne entière), # une colonne entière),
# ou les fonctions de type apply() (nous en parlerons plus tard), # ou les fonctions de type apply() (nous en parlerons plus tard),
# sont préférées # sont préférées.
# IF/ELSE # IF/ELSE
# Encore une fois assez standard # Encore une fois assez standard
@ -356,7 +359,7 @@ if (4 > 3) {
# LES FONCTIONS # LES FONCTIONS
# se définissent comme ceci : # se définissent comme ceci :
jiggle <- function(x) { 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) return(x)
} }
# Appelées comme n'importe quelles autres fonction R : # 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 structures de données : les vecteurs, les matrices,
# les data frame et les tableaux # les data frames et les tableaux
########################################################################## ##########################################################################
# À UNE DIMENSION # À 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, # Récupèrer seulement les premières ou dernières entrées du vecteur,
head(vec, 1) # 8 head(vec, 1) # 8
tail(vec, 2) # 10 11 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 any(vec == 10) # TRUE
# Si un index "dépasse" vous obtiendrez NA : # Si un index "dépasse" vous obtiendrez NA :
vec[6] # NA vec[6] # NA
@ -398,7 +401,7 @@ length(vec) # 4
vec * 4 # 16 20 24 28 vec * 4 # 16 20 24 28
vec[2:3] * 5 # 25 30 vec[2:3] * 5 # 25 30
any(vec[2:3] == 8) # FALSE 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 mean(vec) # 9.5
var(vec) # 1.666667 var(vec) # 1.666667
sd(vec) # 1.290994 sd(vec) # 1.290994
@ -425,7 +428,7 @@ mat
# Différemment du vecteur, la classe d'une matrice est "matrix", # Différemment du vecteur, la classe d'une matrice est "matrix",
# peut importe ce qu'elle contient # peut importe ce qu'elle contient
class(mat) # => "matrix" class(mat) # => "matrix"
# Demander la première ligne # Récupérer la première ligne
mat[1,] # 1 4 mat[1,] # 1 4
# Réaliser une opération sur la première colonne # Réaliser une opération sur la première colonne
3 * mat[,1] # 3 6 9 3 * mat[,1] # 3 6 9
@ -502,13 +505,13 @@ dim(students) # 6 3
# stringsAsFactors = FALSE quand vous créer la data.frame # stringsAsFactors = FALSE quand vous créer la data.frame
?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 # toutes subtilement différentes
students$year # 3 2 2 1 0 -1 students$year # 3 2 2 1 0 -1
students[,2] # 3 2 2 1 0 -1 students[,2] # 3 2 2 1 0 -1
students[,"year"] # 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 # 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 # besoin de fusionner quelques ensembles de données, data.table peut être
# un bon choix. Ici un tour éclair : # un bon choix. Ici un tour éclair :
@ -601,15 +604,15 @@ students[students$house != "G",]
# MULTI-DIMENSIONNELLE (TOUS ÉLÉMENTS D'UN TYPE) # MULTI-DIMENSIONNELLE (TOUS ÉLÉMENTS D'UN TYPE)
# Les arrays créent des tableaux de n dimensions # Les arrays créent des tableaux de n dimensions.
# Tous les éléments doivent être du même type # Tous les éléments doivent être du même type.
# Vous pouvez faire un tableau à 2 dimensions (une sorte de matrice) # 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)) array(c(c(1,2,4,5),c(8,9,3,6)), dim=c(2,4))
# => # =>
# [,1] [,2] [,3] [,4] # [,1] [,2] [,3] [,4]
# [1,] 1 4 8 3 # [1,] 1 4 8 3
# [2,] 2 5 9 6 # [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)) 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 # , , 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, # LES LISTES (MULTI-DIMENSIONNELLES, ÉVENTUELLEMMENT DÉCHIRÉES,
# DE DIFFÉRENTS TYPES) # DE DIFFÉRENTS TYPES)
# Enfin R a des listes (de vecteurs) # Enfin, R a des listes (de vecteurs)
list1 <- list(time = 1:40) list1 <- list(time = 1:40)
list1$price = c(rnorm(40,.5*list1$time,4)) # random list1$price = c(rnorm(40,.5*list1$time,4)) # random
list1 list1
@ -644,10 +647,10 @@ list1[[1]] # encore une façon différente
list1$price[4] list1$price[4]
# Les listes ne sont pas les structures de données les plus efficaces # 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 # À moins d'avoir une très bonne raison, vous devriez utiliser data.frames
# Les listes sont souvent retournées par des fonctions qui effectuent # 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() # 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 # 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") install.packages("plyr")
require(plyr) require(plyr)
?plyr ?plyr
@ -704,7 +707,7 @@ write.csv(pets, "pets2.csv") # to make a new .csv file
# Les tracés # Les tracés
################ ################
# LES FONCTIONS DE TRACÉS PRÉCONSTRUITES # LES FONCTIONS DE TRACÉ PRÉCONSTRUITES
# Les diagrammes de dispersion ! # Les diagrammes de dispersion !
plot(list1$time, list1$price, main = "fake data") plot(list1$time, list1$price, main = "fake data")
# Les régressions ! # 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/) * 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 * [RStudio](http://www.rstudio.com/ide/) est un autre GUI