Lecture et écriture à partir de R

Data Analysis and Programming with R · notes

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

Advertisement

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

Advertisement

: 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

},

{

},

{

Advertisement

},

{

},

{

},

{

},

{

"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

Advertisement

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