Vous êtes sur la page 1sur 36

Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Entrées, sorties, manipulations de fichiers sous R

Jérôme Sueur

MNHN – Systématique et Evolution


UMR CNRS 7205 – ISYEB
sueur@mnhn.fr

28 Avril 2014

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Plan

1 Dossiers de travail et chemins

2 Télécharger et décompresser

3 Explorer

4 Ecrire et modifier

5 Noms des objets et noms des fichiers

6 Supprimer

7 Programmes externes

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Dossier de travail

Pour modifier et connaı̂tre le dossier de travail :


setwd("/media/LACIE/Enseignement/ED/R-APPROF/FICHIERS")
getwd()
[1] "/media/jerome/LACIE/Enseignement/ED/R-APPROF/FICHIERS"

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Chemins

Pour remonter d’un niveau :


setwd("../")
getwd()
[1] "/media/jerome/LACIE/Enseignement/ED/R-APPROF"

Pour descendre d’un niveau :


setwd("FICHIERS")
getwd()
[1] "/media/jerome/LACIE/Enseignement/ED/R-APPROF/FICHIERS"

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Chemins

On peut aussi utiliser file.choose pour trouver interactivement (sous R


GUI) le chemin :
ch<-file.choose()

Pour choisir son répertoire par défaut en un seul clic :


setwd(dirname(file.choose()))

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Lecture url

On peut lire directement un fichier en ligne à partir de son adresse url :


url <- "http://rug.mnhn.fr/cours/data/"
read.table(paste(url,"ddt.dat",sep=""), header=TRUE)
Obs Age TxDDT
1 1 2 0.20
2 2 2 0.25
3 3 2 0.18
4 4 3 0.19
5 5 3 0.29
6 6 3 0.28
7 7 4 0.31
8 8 4 0.33
9 9 4 0.36
10 10 5 0.71
11 11 5 0.38
12 12 5 0.47
13 13 6 1.10
14 14 6 0.87
15 15 6 0.83

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Téléchargement

download.file permet de télécharger un fichier et un seul.


Téléchargement d’un fichier simple ou d’un dossier compressé :
download.file(paste(url,"ddt.dat",sep=""),
destfile="ddt.dat")
download.file(paste(url,"test_file.zip",sep=""),
destfile="test_file.zip")
download.file(paste(url,"test_folder.zip", sep=""),
destfile="test_folder.zip")

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Décompression

La fonction unzip permet de décompresser un dossier .zip ou d’extraire


un ou plusieurs fichiers inclu(s) dans un dossier .zip :
Pour tout décompresser :
unzip("test_folder.zip")

Pour extraire un fichier spécifique dont on connait le nom :


unzip("test_folder.zip", files="departements.xls")

Note
Utiliser la fonction zip() pour compresser des fichiers.

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Contenu d’un dossier

Pour connaı̂tre les fichiers d’un répertoire, utiliser dir ou list.files.


Essayez les commandes suivantes :
dir() # affiche les fichiers du dossier de travail
dir(all.files=TRUE) # affiche les fichiers cachés
dir("/media/LACIE/R") # affiche les fichiers d'un dossier spécifique
dir(pattern="r") # affiche les fichiers contenant un ``r''
dir(pattern=".txt") # affiche les fichiers txt

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Contenu d’un dossier

Pour connaı̂tre les répertoires et les sous répertoires, utiliser dir.files.


dir.list()

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Contenu d’un dossier

Lecture de fichiers dans un boucle :


fichiers <- dir()
n <- length(fichiers)
moy <- numeric(n)
for(i in 1:n)
{
f <- read.table(fichiers[i])
moy[i] <- mean(f)
}

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Contenu d’un dossier zippé

Pour un dossier .zip :


unzip("test_folder.zip", list=TRUE)
Name Length Date
1 test2.txt 48 2009-01-21 10:58:00
2 test1.txt 32 2009-01-21 10:38:00
3 exemple.RData 570 2009-01-21 10:53:00
4 departements.xls 119296 2009-01-21 11:23:00

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Contenu d’un fichier

Pour avoir des informations sur le fichiers :


file.info("ddt.dat")
size isdir mode mtime ctime
ddt.dat 156 FALSE 600 2012-06-26 14:51:17 2012-06-26 14:51:17
atime uid gid uname grname
ddt.dat 2012-09-18 12:24:58 1000 1000 jerome jerome

Pour voir le fichier :


file.show("ddt.dat")

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Dossier(s)

Pour créer un dossier


dir.create("nouveaudossier")
Pour créer un dossier avec la date du jour inclue dans le nom :
date <- format(Sys.Date(), "%d%B%Y")
ch <- paste(getwd(),"/new",date,sep="")
ch
[1] "/media/jerome/LACIE/Enseignement/ED/R-APPROF/FICHIERS/new28avril2014"
dir.create(ch)
setwd(ch)

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Presse papier

Pour récupérer des données du presse papier, utiliser readLines :


x <- readLines("clipboard")

Pour écrire dans le presse papier :


writeLines(x, con = "clipboard", sep = "\n")

Pour saisir des données :


données <- scan()

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Fichier(s)

Pour créer une suite de fichiers :


for(i in 1:5) file.create(paste("essai",LETTERS[i],i,".txt",sep=""))
dir()
[1] "essaiA1.txt" "essaiB2.txt" "essaiC3.txt" "essaiD4.txt"
[5] "essaiE5.txt"

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Sauvegarder

Les fonctions pour sauvegarder diffèrent selon le format des données.


Pour un enregistrement simple en .txt, on peut utiliser write.table.
Par exemple pour écrire 5 fichiers :
for(i in 1:5)
{
a<-rnorm(100)
write.table(a,file=paste("individu",i,".txt",sep=""))
}

Note
Utiliser save pour sauver en .Rdata

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Sauvegarder

Si on veut fusionner les données dans un seul fichier, il faut utiliser


l’argument append :
for(i in 1:5)
{
a<-rnorm(100)
b<-paste("INDIVIDU",LETTERS[i])
write.table(as.matrix(c(b,a)),file="allindiv.txt",
append=TRUE,
col.names=FALSE,row.names=FALSE,
quote=FALSE)
}
Comment voir le fichier ?

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Copier, renommer

On peut copier :
file.copy("essaiA1.txt","essaiA1_bis.txt")
[1] TRUE

renommer :
file.rename("essaiA1_bis.txt","essaiA1_2.txt")
[1] TRUE

ou déplacer (couper) :
file.rename("essaiA1_bis.txt","../essaiA1_bis.txt")
On vérifie les modifications :
dir()
[1] "allindiv.txt" "essaiA1_2.txt" "essaiA1.txt" "essaiB2.txt"
[5] "essaiC3.txt" "essaiD4.txt" "essaiE5.txt" "individu1.txt"
[9] "individu2.txt" "individu3.txt" "individu4.txt" "individu5.txt"

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Assigner

Il n’est pas possible d’utiliser <- dans les boucles.


Il faut utiliser la fonction assign qui a deux arguments principaux :
x : le nom de la nouvelle variable (ce qui serait à gauche de <-)
value : la valeur à assigner à x (ce qui serait à droite de <-)

Par exemple pour créer une série d’objets :


for(i in 1:5){assign(paste("obj",i,sep=""),rnorm(i*10))}

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Assigner

On peut aussi utiliser assign pour récupérer le nom d’un fichier et


l’utiliser comme nom d’objet :
assign(dir()[12],read.table(dir()[12]))
ls()
[1] "a" "b" "ch" "date"
[5] "i" "individu5.txt" "obj1" "obj2"
[9] "obj3" "obj4" "obj5" "url"

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Assigner

Si on veut supprimer le suffixe du fichier, il faut utiliser la fonction


strsplit.
strsplit retourne une liste, il faut récupérer le premier objet avec
[[1]] :
assign(strsplit(dir()[12],".txt")[[1]],read.table(dir()[12]))

Note
On peut aussi utiliser substr avec nchar pour supprimer les 4 derniers
caractères (suffixe) :
substr(dir()[12],1,nchar(dir()[12])-4)
[1] "individu5"

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Récupérer

get permet de récupérer un objet.


Par exemple, on veut utiliser plusieurs objets dans une boucle pour créer
une liste les contenant tous. Intuitivement, on pourrait écrire :
all<-list()
for(i in 1:4){all[[i]] <- paste("obj",i,sep="")}

mais voici ce que cela donne :


str(all)
List of 4
$ : chr "obj1"
$ : chr "obj2"
$ : chr "obj3"
$ : chr "obj4"

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Récupérer

Il faut donc utiliser la fonction get


all<-list()
for(i in 1:4){all[[i]]<-get(paste("obj",i,sep=""))}
str(all)
List of 4
$ : num [1:10] -0.446 2.384 -0.981 1.28 0.778 ...
$ : num [1:20] -1.01 1.305 -1.727 0.627 -0.798 ...
$ : num [1:30] -0.673 -1.563 -0.157 -1.079 0.082 ...
$ : num [1:40] 1.038 -0.4718 0.987 0.0141 0.0755 ...

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

deparse() et substitute()

Cette commande créé un graphique avec x et y comme labels pour les


axes
data1<-rnorm(50)
data2<-data1*2+rnorm(50)
myplot<-function(x,y){plot(x,y);abline(lm(y~x),col=2)}
myplot(data1,data2)

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

deparse() et substitute()

Pour récupérer les noms des variables il faut utiliser deparse et


substitute conjointement :
myplot<-function(x,y)
{
lab1<-deparse(substitute(x))
lab2<-deparse(substitute(y))
plot(x,y,xlab=lab1,ylab=lab2);z<-lm(y~x);abline(z,col=2)
}
myplot(data1,data2)

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Supprimer

Pour lister les objets, utiliser la fonction ls()


ls()
[1] "a" "all" "b" "ch"
[5] "data1" "data2" "date" "i"
[9] "individu5" "individu5.txt" "myplot" "obj1"
[13] "obj2" "obj3" "obj4" "obj5"
[17] "url"

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Supprimer

Pour supprimer un objet, utiliser la fonction rm()


rm(obj1)
ls()
[1] "a" "all" "b" "ch"
[5] "data1" "data2" "date" "i"
[9] "individu5" "individu5.txt" "myplot" "obj2"
[13] "obj3" "obj4" "obj5" "url"

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Supprimer

Pour supprimer un objet via une chaı̂ne de caractères ou sa position dans


la liste des objets, il faut utiliser l’argument list :
i=2
rm(list=paste("obj", i, sep=""))
ls()
[1] "a" "all" "b" "ch"
[5] "data1" "data2" "date" "i"
[9] "individu5" "individu5.txt" "myplot" "obj3"
[13] "obj4" "obj5" "url"

Pour supprimer le dernier objet :


rm(list=ls()[length(ls())])
ls()
[1] "a" "all" "b" "ch"
[5] "data1" "data2" "date" "i"
[9] "individu5" "individu5.txt" "myplot" "obj3"
[13] "obj4" "obj5"

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Supprimer

Pour supprimer tous les objets (attention !) :


rm(list=ls())

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Supprimer

Pour supprimer les 2 premiers fichiers du dossier :


file.remove(dir()[1:2])
[1] TRUE TRUE

Pour supprimer tous les fichiers dont le nom comprend un “e”


file.remove(dir(pattern="e"))
[1] TRUE TRUE TRUE TRUE TRUE

Pour supprimer tous les fichiers :


file.remove(dir())
[1] TRUE TRUE TRUE TRUE TRUE

Pour supprimer un dossier, utiliser la fonction unlink :


unlink(ch, recursive=TRUE)

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Programmes externes

La fonction system() permet d’invoquer un programme externe.


L’argument wait permet de faire tourner le programme en background.

Sous système Unix (Linux, Mac OS) :


system("firefox", wait = FALSE)

Sous système Windows, il faut trouver le chemin complet jusqu’au fichier


exécutable .exe.
Attention il faut encadrer l’argument command avec des guillemets
simples ou utiliser la fonction shQuote()
system(shQuote("c:/Program Files/Mozilla Firefox/firefox.exe"), wait = FALSE)

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Exercice

Récupérer le dossier exercice.zip dans le répertoire


http://rug.mnhn.fr/cours/data.
Décompresser le dossier dans un nouveau dossier ”exercice”
Lire tous les fichiers dans une boucle en créant des objets qui ont le
même nom que le nom de fichier
Faire le graphique suivant :
plot(x = ord[,1], y = abs[,1],
cex = rayon[,1],
col = rainbow(nrow(ord)))

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Solution

Téléchargement et décompression :
setwd("/media/LACIE/Enseignement/ED/R-APPROF/FICHIERS")
url <- "http://rug.mnhn.fr/cours/data/exercice.zip"
download.file(url, destfile="exercice.zip")
unzip("exercice.zip", exdir="exercice")

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Solution

Lecture des fichiers


setwd("exercice")
rep <- dir()
for(i in 1:length(rep)){
assign(strsplit(rep[i], ".txt")[[1]], read.table(rep[i]))
}

J Sueur R : Approfondissement et Applications


Dossiers Télécharger et décompresser Explorer Ecrire et modifier Noms Supprimer Programmes

Solution
Solution graphique...
plot(x = ord[,1], y = abs[,1], cex = rayon[,1], col = rainbow(nrow(ord)))



●●

●● ●
● ●


0.8
0.6
abs[, 1]

0.4
0.2


● ●

●● ●
● ●●

0.2 0.4 0.6 0.8

ord[, 1]

J Sueur R : Approfondissement et Applications

Vous aimerez peut-être aussi