Comment manipuler des fichiers dans r

Parfois, vous pouvez écrire un script dans R qui va traverser un dossier donné et effectuer des actions sur toutes les données dans les fichiers ou un sous-ensemble des fichiers dans ce dossier.

Pour obtenir une liste des fichiers dans un dossier spécifique, utiliser (list.files) ou dir (). Ces deux fonctions faire exactement la même chose, mais pour des raisons de compatibilité descendante, la même fonction a deux noms:

> List.files (file.path ("F:", "Git", "roxygen2")) [1] "roxygen2" "roxygen2.Rcheck" [3] "roxygen2_2.0.tar.gz" "roxygen2_2.1 .tar.gz "
FonctionDescription
Iist.filesListe les fichiers dans un répertoire.
list.dirsÉnumère les sous-répertoires d'un répertoire.
le fichier existeTeste si un fichier spécifique existe dans un emplacement.
File.CreateCrée un fichier.
file.removeSupprime les fichiers (et répertoires dans les systèmes d'exploitation Unix).
tempfileRetourne un nom pour un fichier temporaire. Si vous créez un Fichier par exemple, File.Create ()ou write.table () en utilisant cette retourné Nom R va créer un fichier dans un dossier temporaire.
tempdirRetourne le chemin du fichier d'un dossier temporaire sur votre système de fichiers.

Ensuite, vous arrivez à exercer toutes vos connaissances sur l'utilisation des fichiers. Dans l'exemple suivant, vous créez d'abord un fichier temporaire, puis enregistrez une copie de la iris trame de données de ce fichier. Pour vérifier que le fichier est sur le disque, vous lisez le fichier nouvellement créé une nouvelle variable et inspecter cette variable. Enfin, vous supprimez le fichier temporaire du disque.

Commencer en utilisant le tempfile () fonction pour renvoyer un nom à une chaîne de caractères avec le nom d'un fichier dans un dossier temporaire sur votre système:




> My.file lt; - tempfile ()> my.file [1] "C: Andrie AppData locaux des utilisateurs Temp RtmpGYeLTj file14d4366b6095"

Notez que le résultat est purement une chaîne de caractères, pas un fichier. Ce fichier existe pas encore partout. Ensuite, vous enregistrez une copie de la trame de données iris à my.file en utilisant le write.csv () fonction. Ensuite, utilisez (list.files) pour voir si R a créé le fichier:

> Write.csv (iris, file = my.file)> list.files (tempdir ()) [1] "file14d4366b6095"

Comme vous pouvez le voir, R a créé le fichier. Maintenant, vous pouvez utiliser read.csv () pour importer les données d'une nouvelle variable appelée file.iris:

> File.iris lt; - read.csv (my.file)

Usage str () pour étudier la structure de file.iris. Comme prévu file.iris est un trame de données de 150 observations et six variables. Six variables, dites-vous? Oui, six, bien que l'original iris a seulement cinq colonnes.

Ce qui est arrivé ici est que la valeur par défaut de l'argument row.names de read.csv () est row.names = TRUE. (Vous pouvez le vérifier en examinant de près à l'aide pour ?read.csv ().) Donc, R enregistré les noms de lignes originales de iris à une nouvelle colonne appelée X:

> Str (file.iris) 'data.frame': 150 obs. de 6 variables: $ X: int 1 2 3 4 5 6 7 8 9 10 ... $ Sepal.Length: num 4.9 4.7 4.6 5.1 5.4 4.6 5 5 4.4 4.9 ... $ Sepal.Width: num 3 3,5 3,2 3,1 3.9 3.4 3.4 3.6 2.9 3.1 ... $ Petal.Length: num 1,4 1,3 1,5 1,4 1,4 1,7 1,4 1,5 1,4 1,5 ... $ Petal.Width: num 0,2 0,2 ​​0,2 ​​0,2 ​​0,2 ​​0,4 0,3 0,2 0,2 ​​0,1 $ ... Espèce: Facteur w / 3 niveaux "setosa", "versicolor", ..: 1 1 1 1 1 1 1 1 1 1 ...

Pour laisser votre système de fichiers dans l'ordre original, vous pouvez utiliser file.remove () pour supprimer le fichier temporaire:

> File.remove (my.file)> list.files (tempdir ()) caractère (0)

Comme vous pouvez le voir, le résultat de (list.files) est une chaîne de caractères vide, parce que le fichier ne existe plus dans ce dossier.


» » » » Comment manipuler des fichiers dans r