Dans le cadre d'une tâche plus importante effectuée dans R s'exécuter sous Windows, je voudrais copier les fichiers sélectionnés entre les répertoires. Est-il possible de donner à R une commande comme cp patha/filea*.csv pathb
(remarquez le caractère générique, pour plus de piquant)?en utilisant R pour copier des fichiers
29
A
Répondre
42
Je ne pense pas qu'il y ait annonce façon irecte (timide de shelling-out), mais quelque chose comme le suivant fonctionne habituellement pour moi.
flist <- list.files("patha", "^filea.+[.]csv$", full.names = TRUE)
file.copy(flist, "pathb")
Notes:
- J'ai volontairement décomposé en deux étapes, elles peuvent être combinées.
- Voir l'expression régulière: R utilise true regex, et sépare également le modèle de fichier du chemin, en deux arguments distincts. Dans la regex - ceci est un gotcha commun, car ils sont implicites aux motifs de type générique, mais requis avec les regex (de peur que certains noms de fichiers ne correspondent au motif générique). mais commencez et/ou terminez avec du texte supplémentaire également sélectionné).
- Dans le monde Windows, les utilisateurs ajoutent généralement l'argument
ignore.case = TRUE
àlist.files
, afin d'émuler le fait que les recherches de répertoire ne tiennent pas compte de la casse avec ce système d'exploitation. - La fonction
glob2rx()
de R fournit un moyen pratique de convertir des motifs génériques en expressions régulières. Par exemplefpattern = glob2rx('filea*.csv')
renvoie une regex différente mais équivalente.
11
Vous pouvez
- utilisation
system()
au feu outre une commande comme si elle était sur la coque, y compris englobement - utilisation
list.files()
aliasdir()
pour faire le globbing/reg.exp vous correspondant et la copie des fichiers individuellement - utilisation
file.copy
sur des fichiers individuels, comme indiqué dans la réponse de MJV
+0
jamais entendu parler de 'dir'. C'est _ exactement_ identique à 'list.files' ... étrange d'avoir les deux – MichaelChirico
Questions connexes
- 1. en utilisant Visual Studio pour copier des fichiers?
- 2. Copier des fichiers différents?
- 3. Shell script pour copier des fichiers
- 4. copier des fichiers après la construction réussie
- 5. Faire des gifs animés en utilisant R
- 6. Méthode préférée pour copier des fichiers JPG à partir d'un serveur distant en utilisant PHP
- 7. Copier des fichiers dans le répertoire en fonction de l'entrée utilisateur et en utilisant * pour lister les fichiers
- 8. Copier des fichiers avec MsBuild
- 9. Transférer des fichiers en utilisant C#
- 10. copier plusieurs fichiers en python
- 11. Copier des fichiers avec des noms unicode
- 12. en utilisant grid et ggplot2 pour créer des complots de jointure en utilisant R
- 13. script bash pour copier des fichiers entre les répertoires
- 14. Copier des fichiers avec un chemin d'accès large en C++
- 15. copier-coller en utilisant javascript
- 16. Utilisez rsync pour copier uniquement les fichiers cachés
- 17. Comment copier des fichiers dans un autre répertoire en utilisant MSBuild?
- 18. Copier des fichiers sur le chemin d'accès réseau ou conduire en utilisant python sur OSX
- 19. Comment configurer le presse-papiers pour copier des fichiers?
- 20. comment copier des fichiers de TFS pour effacer le cas?
- 21. Bash: copier et renommer récursivement des fichiers
- 22. script pour taper et copier des répertoires
- 23. Inclure les fichiers R?
- 24. Comment puis-je copier des fichiers avec ASP.Net en utilisant Vista et IIS7?
- 25. NSIS - Comment copier récursivement tout en excluant les fichiers?
- 26. Copier pdfs fichiers pour réseau partagé et les fichiers corrompus
- 27. Comment copier des fichiers dans Visual C++?
- 28. Comment copier des fichiers avec Windows Batch?
- 29. Comment copier des fichiers dans VC++?
- 30. traitement des données d'admission à l'hôpital en utilisant R
Je pense que le modèle devrait être' "filea. + [.] Csv" '. – Marek
@Marek: vous avez raison! En outre, en particulier dans le monde Windows, peopole voudra généralement ajouter l'argument 'ignore.case = TRUE'. J'ai édité en conséquence, merci. – mjv
vous pouvez utiliser? Glob2rx pour convertir des jokers en expressions régulières. –