Lecture et criture partir de R
Yousri Henchiri
14-11-2021
Table des mati res
1 Acc der au syst me de chiers
1.1 R pertoire de travail
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Explorer le contenu du syst me de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Lecture de chiers
2.1 Fichier texte
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Format CSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2 Fichier texte volumineux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Format JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Fichier EXCEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Donn es publi es sur internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 V rication de limportation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 criture dans des chiers
3.1 Fichier texte
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Fichier JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Fichier EXCEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Enregistrement dobjets R dans un chier externe . . . . . . . . . . . . . . . . . . . . . . . . .
3.5 criture de sorties R dans un chier externe . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Chargement dobjets R provenant dun chier externe
5 R sum
1
2
2
3
3
4
5
6
8
8
9
10
10
10
10
11
11
11
12
Dans un cadre danalyse de donn es, lire et crire dans des chiers permet dimporter et dexporter des
donn es. Nous traiterons ici un chier externe de format texte, JSON, EXCEL, HTML ou dans un format
propre R.
Pour apprendre comment lire ou crire des donn es stock es dans une base de donn es, le lecteur est r f r
la page web suivante r pertorie plusieurs packages dans ce contexte : https://CRAN.R-project.org/view=Dat
abases.
1 Acc der au syst me de chiers
An dacc der des donn es partir de R, il faut souvent aller les lire l o elles se trouvent. Si les donn es
sont dans un chier situ sur lordinateur local, dans un certain r pertoire, il faut aller lire son contenu cet
endroit.
Il peut tre identi en utilisant son chemin dacc s complet (full path), ou encore en utilisant un chemin
dacc s relatif un emplacement courant (relative path). Peu importe loption choisie, le chemin doit se
terminer par le nom complet du chier, incluant son extension.
1
Par exemple, supposons que le chier data_ex.txt se trouve dans le r pertoire C:\Programmation_avec_R
de lordinateur dun utilisateur de R sous Windows. Le chemin dacc s complet de ce chier
est C:\Programmation_avec_R\data_ex.txt. Le chemin dacc s du chier
relatif au r pertoire
C:\Programmation_avec_R.
Remarques importantes
Dans un chemin dacc s, il faut plut t s parer les composantes par le caract re /, ou encore par \\. De
plus, un chemin dacc s doit toujours tre pr sent sous forme de cha ne de caract res, donc tre encadr de
guillemets.
Le chemin dacc s C:\Programmation_avec_R\data_ex.txt devrait tre crit : "C:/Programmation_avec_R/data_ex.txt".
Ce chemin pourrait tre produit avec la fonction file.path comme suit.
file.path("C:", "Programmation_avec_R", "data_ex.txt")
[1] "C:/Programmation_avec_R/data_ex.txt"
1.1 R pertoire de travail
Pour conna tre le r pertoire de travail (ou r pertoire courant (working directory)), il sut de soumettre la
commande suivante :
getwd()
Pour acc der au chier data_ex.txt en utilisant seulement son nom, il faut dabord sassurer que le r pertoire
de travail correspond au r pertoire contenant le chier. La fonction setwd permet de modier le r pertoire de
travail. Par exemple, la commande suivante change le r pertoire de travail pour "C:/Programmation_avec_R".
setwd("Programmation_avec_R")
le r pertoire de travail avait t x "C:",
Si
"Programmation_avec_R/data_ex.txt".
le chemin dacc s relatif du chier aurait t
Dans les chemins dacc s des chiers en R, les symboles ., .. et ~ ont les signications usuelles suivantes :
" . : r pertoire de travail courant,
" .. : r pertoire parent du r pertoire de travail courant,
" ~ : r pertoire de travail par d faut.
1.2 Explorer le contenu du syst me de chiers
R a donc acc s au syst me de chiers de lordinateur partir duquel la session a t d marr e. Directement
dans la console R, il est possible de voir le contenu dun r pertoire, de cr er des chiers et des r pertoires,
deacer des chiers, etc.
Pour de linformation ce propos, la che daide nomm e files (ouverte avec la commande help(files))
est un bon point de d part.
Contentons-nous ici dillustrer lutilisation de la fonction dir, qui permet d num rer le contenu dun
r pertoire.
dir()
[1] "data_ex.csv" "data_ex.json" "data_ex.txt"
"data_ex.xlsx"
Un bon truc pour trouver facilement le nom complet dun chier, qui respecte la syntaxe de R, est dutiliser
la commande suivante :
file.choose()
2
Cette commande ouvre une fen tre pour naviguer dans le syst me de chiers et s lectionner un chier. Une fois
la s lection du chier compl t e, la commande file.choose() retourne une cha ne de caract res contenant
le chemin dacc s complet du chier s lectionn .
2 Lecture de chiers
Les donn es importer en R peuvent provenir de toutes sortes de sources. Nous aborderons ici uniquement
les formats texte, CSV, JSON, EXCEL, ainsi que les formats propres R. La lecture de table HTML sur le
web sera aussi introduite. Les donn es du data frame suivant seront utilis es dans les exemples. Il sagit de
donn es cr es dans lesquelles deux valeurs ont t remplac es par des valeurs manquantes. Ces donn es se
rapportent une exp rience de lancers de d s.
de_1 <- c(2, 3, 4, 1, 2, 3, 5, 6, 5, 4)
de_2 <- c(1, 4, 2, 3, 5, 4, 6, 2, 5, 3)
lanceur <- rep(c("Luc", "Kim"), each = 5)
data_ex <- data.frame(de1 = de_1, de2 = de_2, lanceur = lanceur)
Introduction de valeurs manquantes
data_ex$de2[7] <- NA
data_ex$lanceur[3] <- NA
Affichage du date frame
data_ex
##
1
2
3
4
5
6
7
8
9
10
de1 de2 lanceur
Luc
Publicité
Luc
<NA>
Luc
Luc
Kim
Kim
Kim
Kim
Kim
1
4
2
3
5
4
NA
2
5
3
2
3
4
1
2
3
5
6
5
4
Avant de lire en R un chier de donn es, il est utile de dabord le visualiser an de conna tre la fa on dont les
donn es sont format es.
2.1 Fichier texte
Le chier data_ex.txt contient les donn es exemple sous un format texte. Le contenu du chier est comme
suit
de1 de2 lanceur
2
3
4
1
2
3
5
6
5
Luc
Luc
.
Luc
Luc
Kim
Kim
Kim
Kim
1
4
2
3
5
4
.
2
5
3
4
3
Kim
Remarquons que les valeurs manquantes dans ce chier sont repr sent es par des points.
Les fonctions pour lire dans des chiers texte externes sont readLines et scan. Cependant, ces fonctions ne
sont pas les meilleurs outils pour la lecture de tableaux de donn es. Comme son nom lindique, la fonction
readLines lit un chier texte ligne par ligne.
lecture_readLines <- readLines("data_ex.txt")
lecture_readLines
[1] "de1\tde2\tlanceur" "2\t1\tLuc"
"2\t5\tLuc"
[5] "1\t3\tLuc"
"5\t5\tKim"
[9] "6\t2\tKim"
"3\t4\tLuc"
"3\t4\tKim"
"4\t3\tKim"
"4\t2\t."
"5\t.\tKim"
Le r sultat est un vecteur contenant un l ment par ligne du chier lu. Nous pouvons constater que le
caract re s parant les champs dans le chier data_ex.txt est \t, ce qui repr sente une tabulation.
La fonction scan permet quant elle de lire des donn es en les consid rant toutes du m me type et stocke
les donn es lues dans un vecteur ou une liste.
lecture_scan <- scan("data_ex.txt", what = "character")
lecture_scan
[1] "de1"
[9] "Luc"
[17] "5"
[25] "6"
[33] "Kim"
"de2"
"4"
"Luc"
"2"
"lanceur" "2"
"."
"2"
"4"
"3"
"5"
"Kim"
"1"
"1"
"Kim"
"5"
"Luc"
"3"
"5"
"Kim"
"3"
"Luc"
"."
"4"
"4"
"2"
"Kim"
"3"
Pour limportation dun tableau de donn es provenant dun chier texte, la meilleure fonction oerte dans
le R de base est plut t read.table. Par exemple, lisons les donn es contenues dans le chier data_ex.txt
avec read.table.
data_ex_txt <- read.table("data_ex.txt")
Les autres arguments de la fonction read.table doivent tre adapt s selon le formatage du chier lire (voir
la che daide de la fonction read.table).
data_ex_txt <- read.table("data_ex.txt",header=TRUE, na.strings = ".")
str(data_ex_txt)
10 obs. of 3 variables:
'data.frame':
$ de1
$ de2
$ lanceur: Factor w/ 2 levels "Kim","Luc": 2 2 NA 2 2 1 1 1 1 1
: int 2 3 4 1 2 3 5 6 5 4
Publicité
: int 1 4 2 3 5 4 NA 2 5 3
La fonction read.table retourne toujours un objet de type data frame.
2.1.1 Format CSV
Le format CSV est un format texte de donn es assez usuel. CSV signie Comma Separated Values. En fait,
dans un chier CSV, les valeurs sont s par es par des virgules ou des points-virgules. Deux s parateurs
cons cutifs signient quune valeur est manquante. Le chier data_ex.csv est un exemple de chier sous ce
format.
"de1";"de2";"lanceur"
2;1;"Luc"
3;4;"Luc"
4;2;
1;3;"Luc"
4
2;5;"Luc"
3;4;"Kim"
5;;"Kim"
6;2;"Kim"
5;5;"Kim"
4;3;"Kim"
La fonction read.csv2 est la meilleure fonction pour importer ce chier puisque la valeur par d faut de son
argument sep est ";". Cette fonction appelle en fait la fonction read.table, mais avec des valeurs par d faut
di rentes pour les arguments. Ce type de fonction est appel fonction enveloppe. La fonction read.table
poss de 4 fonctions enveloppe : read.csv, read.csv2, read.delim et read.delim2.
Les arguments de la fonction read.csv2 ont-ils toutes les bonnes valeurs par d faut pour importer le chier
data_ex.csv ?
data_ex_csv <- read.csv2("data_ex.csv")
str(data_ex_csv)
10 obs. of 3 variables:
'data.frame':
$ de1
$ de2
$ lanceur: Factor w/ 3 levels "","Kim","Luc": 3 3 1 3 3 2 2 2 2 2
: int 2 3 4 1 2 3 5 6 5 4
: int 1 4 2 3 5 4 NA 2 5 3
Ici, la premi re ligne a correctement t interpr t e comme le nom des variables, parce que largument header
de read.csv2 prend par d faut la valeur TRUE. Aussi, la valeur manquante a t bien interpr t e pour la
variable num rique, mais pas pour la variable cat gorique. Utilisons donc largument na.strings comme suit
pour faire correctement limportation.
data_ex_csv <- read.csv2("data_ex.csv", na.strings = "")
str(data_ex_csv)
10 obs. of 3 variables:
'data.frame':
$ de1
$ de2
$ lanceur: Factor w/ 2 levels "Kim","Luc": 2 2 NA 2 2 1 1 1 1 1
: int 2 3 4 1 2 3 5 6 5 4
: int 1 4 2 3 5 4 NA 2 5 3
2.1.2 Fichier texte volumineux
La fonction read.table (et ses fonctions enveloppe) arrive en principe lire nimporte quel chier texte de
donn es. Elle peut cependant tre lente pour lire des chiers volumineux. Dans ce cas, il est plus pratique de
se tourner vers une alternative plus rapide.
2.1.2.1 Package readr
Le package readr du tidyverse ore di rentes fonctions pour lire des chiers textes, selon leur format. Par
exemple, il ore la fonction read_csv2, similaire la fonction read.csv2 du R de base. Voici un exemple
dutilisation de cette fonction.
library(readr)
data_ex_csv_readr <- read_csv2("data_ex.csv")
str(data_ex_csv_readr)
: num [1:10] 2 3 4 1 2 3 5 6 5 4
: num [1:10] 1 4 2 3 5 4 NA 2 5 3
spec_tbl_df [10 x 3] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
$ de1
$ de2
$ lanceur: chr [1:10] "Luc" "Luc" NA "Luc" ...
- attr(*, "spec")=
##
.. cols(
5
##
##
##
##
..
..
..
.. )
de1 = col_double(),
de2 = col_double(),
lanceur = col_character()
Lobjet retourn par les fonctions de readr est un tibble. Remarquons que la fonction read_csv2 a
correctement interpr t les valeurs manquantes et elle na pas stock les donn es de type caract re dans un
facteur. Des attributs ont t ajout s au tibble pour sp cier les types des colonnes.
2.1.2.2 Package data.table
Bien que les fonctions du package readr tendent tre plus rapides que la fonction read.table, une autre
fonction est capable d tre encore plus rapide : la fonction fread du package data.table. Voici un exemple
dutilisation de cette fonction.
library(data.table)
data_ex_csv_fread <- fread("data_ex.csv", na.strings = "")
str(data_ex_csv_fread)
Classes 'data.table' and 'data.frame':
: int
$ de1
$ de2
: int
$ lanceur: chr
- attr(*, ".internal.selfref")=<externalptr>
2 3 4 1 2 3 5 6 5 4
1 4 2 3 5 4 NA 2 5 3
"Luc" "Luc" NA "Luc" ...
10 obs. of 3 variables:
Lobjet retourn par la fonction fread est un data table. Tout comme la fonction read.table, la fonction
fread poss de un argument nomm na.strings, que nous avons du sp cier an que la valeur manquante
pour la variable cat gorique soit bien interpr t e. La fonction fread a, comme read.table et read_csv2,
stock par d faut dans un vecteur les donn es de types caract res.
2.2 Format JSON
Ce ne sont pas toutes les donn es qui conviennent au format tableau de donn es avec des observations en
lignes et des variables en colonnes. Le format JSON nest pas contraint des donn es de ce type. Un chier
JSON est en fait un chier texte, contenant des paires attributs - valeurs. Par exemple, les donn es utilis es
dans les exemples pr c dents ont lallure suivante en format JSON.
json <- '[
{
},
{
},
{
},
{
"de1": 2,
"de2": 1,
"lanceur": "Luc"
"de1": 3,
"de2": 4,
"lanceur": "Luc"
"de1": 4,
"de2": 2,
"lanceur": null
"de1": 1,
"de2": 3,
"lanceur": "Luc"
6
},
{
},
{
Publicité
},
{
},
{
},
{
},
{
"de1": 2,
"de2": 5,
"lanceur": "Luc"
"de1": 3,
"de2": 4,
"lanceur": "Kim"
"de1": 5,
"de2": null,
"lanceur": "Kim"
"de1": 6,
"de2": 2,
"lanceur": "Kim"
"de1": 5,
"de2": 5,
"lanceur": "Kim"
"de1": 4,
"de2": 3,
"lanceur": "Kim"
}
]'
Le chier comporte un l ment pour chacune des 10 observations. Pour chaque observation, la valeur prise
pour chacune des variables est sp ci e. Ce format est plus souple quun tableau de donn es, car la valeur
dune variable pour une observation pourrait tre de nimporte quelle dimension, plut t que d tre une seule
donn e. Remarquons que dans le format JSON, une donn e manquante est repr sent e par null plut t que
NA.
Aucune fonction de linstallation de base de R ne permet de lire ce format de chier. Cependant, quelques
packages orent des fonctions pour ce faire. Cest le cas de la fonction fromJSON du package jsonlite. Voici
un exemple dutilisation de cette fonction.
library(jsonlite)
data_ex_json <- fromJSON("data_ex.json")
str(data_ex_json)
10 obs. of 3 variables:
'data.frame':
$ de1
$ de2
$ lanceur: chr "Luc" "Luc" NA "Luc" ...
: int 2 3 4 1 2 3 5 6 5 4
: int 1 4 2 3 5 4 NA 2 5 3
La fonction fromJSON a converti le contenu du chier data_ex.json en data frame.
7
2.3 Fichier EXCEL
An de lire en R des donn es provenant dun chier EXCEL, une premi re option est denregistrer le chier
dans un format texte, puis de limporter en R avec les moyens vus pr c demment. Il existe quelques packages R
orant des fonctions pour lire directement dans un chier EXCEL. Un de ces packages est readxl. Supposons
que nous voulons importer en R le chier EXCEL data_ex.xlsx.
Nous pourrions proc der comme suit.
library(readxl)
data_ex_xlsx <- read_excel("data_ex.xlsx")
str(data_ex_xlsx)
tbl_df [10 x 3] (S3: tbl_df/tbl/data.frame)
$ de1
$ de2
$ lanceur: chr [1:10] "Luc" "Luc" NA "Luc" ...
: num [1:10] 2 3 4 1 2 3 5 6 5 4
: num [1:10] 1 4 2 3 5 4 NA 2 5 3
Un des grands avantages de readxl comparativement dautres packages orant des fonctions pour lire
des chiers EXCEL est quil ne d pend pas dun autre logiciel. Plusieurs de ces packages requi rent une
installation du logiciel Java.
2.4 Donn es publi es sur internet
Pour lire des donn es stock es dans un chier t l chargeable sur une page web, il sut de dabord t l charger
le chier, puis de le lire avec un des moyens pr sent s pr c demment. Il est aussi possible de donner comme
argument file une fonction de la famille read.table directement une URL (adresse web).
La plupart des donn es disponibles sur le web ne sont cependant pas distribu es dans un chier. Souvent, elles
sont simplement pr sent es sous forme de tableaux dans des tables HTML. Une fa on dimporter en R les
donn es dune table HTML serait de copier/coller le contenu de la table dans un chier (texte ou autre), puis
dimporter ce chier en R. Si la table HTML en question provient dune page sur un Wiki, tel que Wikip dia,
le site web https://wikitable2csv.ggor.de/ facilite m me cette t che en cr ant des chiers au format CSV
contenant les donn es dans les tables HTML.
Ces fa ons de proc der ne sont cependant pas automatiques. Certains packages R permettent d viter les
tapes interm diaires manuelles et permettent de lire directement dans une table HTML. Il est ainsi facile
dacc der un tr s grand nombre de donn es en R.
Voici un exemple de lecture de donn es directement partir dune table HTML avec le package rvest.
8
library(rvest)
url <- "https://en.wikipedia.org/wiki/List_of_highest-grossing_films"
page <- read_html(url)
tables <- html_table(page, fill = TRUE)
boxoffice <- tables[[1]]
str(boxoffice)
tbl_df [50 x 6] (S3: tbl_df/tbl/data.frame)
$ Rank
$ Peak
$ Title
$ Worldwide gross: chr [1:50] "$2,847,246,203" "$2,797,501,328" "$2,187,425,379" "$2,068,223,624" ...
$ Year
$ Reference(s)
: int [1:50] 1 2 3 4 5 6 7 8 9 10 ...
: chr [1:50] "1" "1" "1" "3" ...
: chr [1:50] "Avatar" "Avengers: Endgame" "Titanic" "Star Wars: The Force Awakens" ...
: int [1:50] 2009 2019 1997 2015 2018 2015 2019 2012 2015 2019 ...
: chr [1:50] "[# 1][# 2]" "[# 3][# 4]" "[# 5][# 6]" "[# 7][# 8]" ...
La fonction read_html lit tout le code HTML dune page web. Cette lecture fonctionnera videmment la
condition d tre connect internet. La fonction html_table en extrait les tables et les converties en data
frames. Pour nir, il ne reste plus qu extraire la table voulue parmi toutes les tables lues.
Le data frame obtenu dans le code pr c dent, nomm boxoffice, contient les recettes des lms ayant g n r s
le plus de revenus dans les cin mas am ricains, telles que pr sent es sur la page web https://en.wikipedia.org
/wiki/List_of_highest-grossing_films.
Il existe de plus en plus de packages R pour aller chercher rapidement des donn es publi es sur des sites web.
Par exemple, le package gtrendsR permet dimporter en R des donn es provenant de Google trends. La page
web suivante num re des packages utiles pour aller chercher des donn es sur divers sites web :
https://cran.r-project.org/web/views/WebTechnologies.html.
2.5 V rication de limportation
Il faut toujours v rier que lobjet R dans lequel nous avons import des donn es contient les bonnes donn es
et sous le bon format. Si ce nest pas le cas, la commande dimportation de donn es doit tre corrig e.
Plusieurs tentatives sont parfois n cessaires an darriver eectuer correctement limportation.
Voici une liste de v rications quil est toujours bon deectuer apr s une importation en R, dans un data
frame, de donn es sous forme de tableau avec des observations en lignes et des variables en colonnes.
" Est-ce que le nombre de variables (colonnes) dans le data frame est le m me que le nombre de variables
dans le chier ?
" Est-ce que le nombre dobservations (lignes) dans le data frame est le m me que le nombre dobservations
dans le chier ?
" Est-ce que, pour chacune des variables du jeu de donn es, le type de donn es dans le data frame
correspond au type de donn es dans le chier ?
" Si le jeu de donn es nest pas de tr s petite taille, il est impossible de v rier une une toutes les
observations. Cependant, pour une observation (ligne) s lectionn e au hasard (ou plus dune si vous
d sirez tre encore plus rigoureux), est-ce que les valeurs de cette observation dans le data frame sont
identiques aux valeurs de cette observation dans le chier ?
" Est-ce que les donn es manquantes sont bien repr sent es dans data frame par la constante NA, et ce,
dans les colonnes de tout type ?
Si vous r pondez oui toutes ces questions, votre importation de donn es a de bonnes chances davoir t
eectu e correctement.
9
3 criture dans des chiers
3.1 Fichier texte
Les fonctions de base en R pour crire dans un chier texte sont writeLines, write et write.table. Les
fonctions writeLines et write sont l quivalent de readLines et scan, respectivement, pour l criture dans
Publicité
des chiers au lieu de la lecture. Pour r aliser une t che dexportation de jeux de donn es, la fonction
write.table est la mieux adapt e des trois. Par exemple, exportons le contenu du data frame data_ex dans
un chier texte nomm data_ex_export.txt et positionn dans le r pertoire de travail.
#de_1 <- c(2, 3, 4, 1, 2, 3, 5, 6, 5, 4)
#de_2 <- c(1, 4, 2, 3, 5, 4, 6, 2, 5, 3)
#lanceur <- rep(c("Luc", "Kim"), each = 5)
#data_ex <- data.frame(de1 = de_1, de2 = de_2, lanceur = lanceur)
write.table(x = data_ex, file = "data_ex_export.txt", fileEncoding = "UTF-8")
Il faut sp cier la fonction lobjet, typiquement une matrice ou un data frame, dans lequel se trouvent les
donn es exporter (argument x), ainsi que le chier dans lequel crire les donn es (argument file). Le chier
peut tre sp ci par un chemin dacc s complet ou relatif, comme pour les fonctions de lecture de chier.
La fonction write.table poss de plusieurs arguments permettant de contr ler le formatage des donn es.
Un de ces arguments, nomm fileEncoding, est utilis dans lexemple pr c dent. En fournissant la valeur
"UTF-8" largument fileEncoding, on cr e un chier dencodage UTF-8, dont lusage est tr s r pandu. Sans
cet argument, write.table pourrait par d faut cr er un chier dont lencodage est sp cique au syst me
dexploitation utilis et qui pourrait causer probl mes sous un autre syst me dexploitation. Par exemple,
si vous travaillez sous Windows, le chier cr pourrait contenir des lettres accentu es non reconnues sous
macOS en raison dun encodage mal compris. Sp cier largument fileEncoding = "UTF-8" permet d viter
ce genre de souci.
Tous les informations concernant ces arguments, ainsi que tous les autres arguments non mentionn s ici, se
trouvent dans la che daide de la fonction write.table.
Il existe aussi deux fonctions enveloppe la fonction write.table pour les formats CSV, nomm es write.csv
et write.csv2.
3.2 Fichier JSON
Pour exporter les donn es dans un data frame en format JSON avec le package jsonlite, il faut dabord
transformer les donn es au format JSON avec la fonction toJSON. Ensuite, lobjet obtenu doit tre crit dans
un chier externe avec la fonction write du R de base.
library(jsonlite)
#de_1 <- c(2, 3, 4, 1, 2, 3, 5, 6, 5, 4)
#de_2 <- c(1, 4, 2, 3, 5, 4, 6, 2, 5, 3)
#lanceur <- rep(c("Luc", "Kim"), each = 5)
#data_ex <- data.frame(de1 = de_1, de2 = de_2, lanceur = lanceur)
data_ex_json <- toJSON(data_ex, pretty = TRUE)
write(x = data_ex_json, file = "data_ex_export.json")
3.3 Fichier EXCEL
Le package openxlsx ore des fonctions pour exporter des donn es stock es dans un objet R dans un chier
EXCEL. Par exemple, le contenu du data frame data_ex peut tre crit dans un chier EXCEL avec la
fonction write.xlsx comme suit.
library(openxlsx)
#de_1 <- c(2, 3, 4, 1, 2, 3, 5, 6, 5, 4)
10
#de_2 <- c(1, 4, 2, 3, 5, 4, 6, 2, 5, 3)
#lanceur <- rep(c("Luc", "Kim"), each = 5)
#data_ex <- data.frame(de1 = de_1, de2 = de_2, lanceur = lanceur)
write.xlsx(x = data_ex, file = "data_ex_export.xlsx")
3.4 Enregistrement dobjets R dans un chier externe
R propose des fonctions pour enregistrer des objets entiers, en conservant la fois les donn es contenues dans
les objets et les structures des objets.
Format binaires
Lors de la fermeture de R, il nous est propos par d faut denregistrer cette image. La fonction save.image
peut aussi tre utilis e en tout temps pour enregistrer cette image.
save.image(file = "image.RData")
La fonction save permet denregistrer un ou des objets en particulier, par exemple :
save(data_ex, de_1, file = "deux_obj.rda")
save(data_ex, file = "data_ex.rda")
R ore aussi un format binaire alternatif pour enregistrer un seul objet, sans inclure le nom de lobjet dans le
chier. Il sagit du format .rds, obtenu avec la fonction saveRDS.
saveRDS(data_ex, file = "data_ex.rds")
Il est recommand dutiliser les extensions suivantes :
" .RData ou .rda pour un objet cr avec les fonctions save.image ou save,
" .rds pour un chier cr avec la fonction saveRDS.
Format texte
Il est aussi possible denregistrer des objets R sous un format texte avec dump ou dput. La fonction dump
permet denregistrer plus dun objet et les noms des objets sont inclus dans le chier (comme pour save et
save.image). La fonction dput ne permet denregistrer quun seul objet et son nom nest pas inclus dans
lobjet (comme pour saveRDS). Cependant, lutilisation des formats binaires est plus ecace et able.
3.5 criture de sorties R dans un chier externe
Finalement, il est possible denvoyer les r sultats de nos commandes dans un chier texte externe plut t que
dans la console gr ce aux fonctions capture.output et sink.
capture.output(summary(data_ex), file = "data_ex_summary.out")
sink("data_ex.out")
data_ex
colMeans(data_ex[, 1:2], na.rm = TRUE)
sink()
4 Chargement dobjets R provenant dun chier externe
Formats binaires
11
Pour charger en R des objets R stock s dans un chier au format .RData, .rda ou .rds, il faut utiliser la
fonction
" load : pour les chiers produits avec la fonction save ou save.image (format .RData ou .rda, peut
contenir plus dun objet, les noms des objets sont inclus dans le chier) ;
" readRDS : pour les chiers produits avec la fonction saveRDS (format .rds, ne peut contenir quun seul
objet, le nom de lobjet nest pas inclus dans le chier) ; la fonction readRDS doit tre utilis e avec une
assignation pour stocker le r sultat de limportation dans un objet.
Voici deux exemples dappel de ces fonctions.
load("deux_obj.rda")
data_ex_copie <- readRDS("data_ex.rds")
La fonction load ajoute des objets dans lenvironnement de travail. Si des objets portant les m mes noms
que ceux importer sont d j pr sents dans lenvironnement de travail, ils sont remplac s sans m me quun
avertissement ne soit mis. Avec cette fonction, il y a donc un risque d craser sans sen rendre compte des
objets pr sents dans notre environnement de travail.
Rappel : Si le r pertoire de travail par d faut de R contient un chier nomm .RData, les objets dans ce
chier seront automatiquement charg s en R lors dune ouverture de session. Pour emp cher ce chargement
automatique, il faut eacer ce chier .RData .
5 R sum
R pertoire de travail et criture de chemins dacc s des chiers
R pertoire de travail = emplacement par d faut dans le syst me de chier de notre ordinateur utilis dans la
session R.
" getwd : ache le chemin dacc s au r pertoire de travail,
" setwd : permet de changer de r pertoire de travail.
R gles respecter dans l criture de chemins dacc s des chiers :
" pas de \ : seuls / et \\ sont accept s pour s parer les l ments dun chemin dacc s ;
" toujours inclure lextension du chier ;
" encadrer le chemin de guillemets.
Exemple :
"C:/Programmation_avec_R/data_ex.txt"
Lecture (importation) dans des chiers
" Format lire (TEXTE) Fonctions de lecture (read.table(.csv,.csv2,.delim,.delim2),
read_table (_csv,_delim,ect : package readr), fread(package data.table)).
" Format lire (JSON) Fonctions de lecture (fromJSON (package jsonlite)).
" Format lire (EXCEL) Fonctions de lecture (read_excel (package readxl)).
" Format lire (table HTML) Fonctions de lecture (read_html + html_table (package
rvest)).
Des fonctions existent pour importer des donn es sous plusieurs autres formats.Il est conseill de toujours
v rier que les donn es import es sont les bonnes et sous le bon format. Si ce nest pas le cas, la commande
dimportation de donn es doit tre corrig e.
12
criture (exportation) dans des chiers
Des fonctions existent pour exporter des donn es sous plusieurs autres formats.
" Format exporter (TEXTE) Fonctions de lecture (recommand ) (write.table(.csv,.csv2)).
" Format exporter (JSON) Fonctions de lecture (toJSON (package jsonlite)+ write).
" Format exporter (EXCEL) Fonctions de lecture (writw_xlsx (package openxlsx)).
" Format exporter (objet R avec structure compl te) Fonctions de lecture (save.image, save
(Object(s) + leur(s) nom(s))).
" Format exporter (objet R) Fonctions de lecture (saveRDS, un seul objet, sans son nom).
" Format exporter (sorties R) Fonctions de lecture (capture.output, sink).
Chargement dobjets R provenant dun chier externe
Fonction pour charger des objets stock s dans un chier externe :
" chier cr avec save.image ou save (typiquement extension .RData ou .rda) : load ;
" chier cr avec saveRDS : readRDS, accompagn e dune assignation un nom pour enregistrer lobjet
dans lenvironnement de travail.
13