Como parte de una tarea más grande realizada en R ejecutada en Windows, me gustaría copiar los archivos seleccionados entre directorios. ¿Es posible dar dentro de R un comando como cp patha/filea*.csv pathb
(observe el comodín, para obtener más sabor)?usando R para copiar archivos
29
A
Respuesta
42
no creo que existe anuncio manera directa (tímida de bombardeo), pero algo como lo siguiente generalmente me funciona.
flist <- list.files("patha", "^filea.+[.]csv$", full.names = TRUE)
file.copy(flist, "pathb")
Notas:
- deliberadamente descompone en dos etapas, que se pueden combinar.
- Vea la expresión regular: R usa la expresión regular verdadera, y también separa el patrón del archivo de la ruta, en dos argumentos separados.
- observe
^
y$
(principio/fin de cadena) en la expresión regular - esto es un resultado común, ya que están implícitos en patrones de tipo comodín, pero necesarios con expresiones regulares (no sea que algunos nombres de archivos coincidan con el patrón de comodín pero también se iniciará y/o finalizará con texto adicional seleccionado). - En el mundo de Windows, las personas suelen agregar el argumento
ignore.case = TRUE
allist.files
, para emular el hecho de que las búsquedas de directorios no distinguen entre mayúsculas y minúsculas con este sistema operativo. - La función de R
glob2rx()
proporciona una forma conveniente de convertir patrones de comodines a expresiones regulares. Por ejemplo,fpattern = glob2rx('filea*.csv')
devuelve una expresión regular diferente pero equivalente.
11
Puede
- uso
system()
de disparar un comando como si se tratara de cáscara, incl globbing - uso
list.files()
akadir()
para hacer el englobamiento/reg.exp juego mismo y la copia de los archivos individualmente - uso
file.copy
en archivos individuales, como se muestra en la respuesta de MJV
+0
nunca he oído hablar de 'dir'. Es _exactamente_ idéntico a 'list.files' ... extraño tener ambos – MichaelChirico
Cuestiones relacionadas
- 1. ¿Usando mapper & fileset para copiar archivos en un subdirectorio diferente?
- 2. Script Scala para copiar archivos
- 3. Copiar varios archivos usando comodines/recursivamente usando Wix
- 4. Cómo decirle a 'PowerShell' Copiar-Elemento para copiar incondicionalmente archivos
- 5. Copiar directorio usando Qt
- 6. Copiar carpeta usando Copiar-Elemento - comportamiento diferente
- 7. Use rsync para copiar solo los archivos ocultos
- 8. Copiar archivos sin sobreescribir
- 9. Cómo copiar archivos usando API REST DropBox en Delphi
- 10. Usando Maven para proyectos R
- 11. Cómo copiar varios archivos desde un directorio diferente usando cp?
- 12. Buscar y copiar archivos
- 13. ¿Cómo puedo copiar archivos de red usando Robocopy?
- 14. R: ¿Función para copiar al portapapeles en Mac/OSX?
- 15. Cómo copiar archivos en java
- 16. R: copiar/mover un entorno a otro
- 17. Copiar archivos o directorios recursivamente en Python
- 18. use comodín para copiar carpetas usando maven-assembly-plugin
- 19. ¿Cómo cambio el nombre de los archivos usando R?
- 20. copiar varios archivos en python
- 21. MSBuild Copiar tarea sin copiar archivos la primera vez
- 22. Usando xcopy para copiar múltiples archivos/directorios, algunos de los cuales tienen espacios
- 23. Cómo copiar un archivo usando Paperclip
- 24. Cómo copiar un directorio usando Ant
- 25. Descomprimir archivo gz usando R
- 26. Incluir archivos R?
- 27. Ruby muestra el progreso al copiar archivos
- 28. Comandos de Linux para copiar un archivo en muchos archivos
- 29. Utilidad de Windows para copiar archivos desde un equipo remoto
- 30. ¿Cómo puedo usar qmake para copiar archivos recursivamente?
Creo que el patrón debería ser' "^ filea. + [.] Csv" '. – Marek
@Marek: ¡lo tienes! Además, en particular en el mundo de Windows, peopole normalmente querrá agregar el argumento 'ignore.case = TRUE'. Edité en consecuencia, gracias. – mjv
puede usar? Glob2rx para convertir de comodines a expresiones regulares. –