Soy muy nuevo en R y estoy trabajando en actualizar un script R para iterar a través de una serie de tablas .dbf creadas usando ArcGIS y producir una serie de gráficos.
Tengo un directorio, C: \ Scratch, que contendrá todos mis archivos .dbf. Sin embargo, cuando ArcGIS crea estas tablas, también incluye un archivo .dbf.xml. Quiero eliminar estos archivos .dbf.xml de mi lista de archivos y, por lo tanto, de mi iteración. He intentado buscar y experimentar con expresiones regulares en vano. Esta es la expresión básica que estoy usando (excluyendo todos los diversos experimentos):
files <- list.files(pattern = "dbf")
¿Alguien puede darme alguna dirección?
glob2rx()
menudo es útil.Respuestas:
$
al final significa que este es el final de la cadena."dbf$"
también funcionará, pero al agregar\\.
(.
es un carácter especial en las expresiones regulares, por lo que debe escapar), asegúrese de que solo coincida con los archivos con extensión.dbf
(en caso de que tenga, por ejemplo,.adbf
archivos).fuente
ignore.case
argumento de la función, entonceslist.files(pattern = "\\.dbf$", ignore.case=TRUE)
. Y mire en la página de ayuda para esa función (?list.files
) para más detalles.Pruebe esto, que usa globos en lugar de expresiones regulares, por lo que solo seleccionará los nombres de archivo que terminan en
.dbf
fuente
Peg el patrón para encontrar
"\\.dbf"
al final de la cadena usando el$
carácter:fuente
\` escape the
.` ahora. ¿Entonces uno se pregunta por qué esto se votó negativamente?No soy muy bueno en el uso de expresiones regulares sofisticadas, por lo que haría esa tarea de la siguiente manera:
La primera línea solo enumera todos los archivos del directorio de trabajo. El segundo descarta todo lo que contiene ".xml" (grep devuelve índices de tales cadenas en el vector 'archivos'; el subconjunto con índices negativos elimina las entradas correspondientes del vector). El argumento "fijo" para la función grep es solo mi capricho, ya que generalmente quiero que realice una coincidencia de patrones crudos sin expresiones regulares elegantes de Perl, lo que puede sorprenderme.
Soy consciente de que tal solución simplemente refleja inconvenientes en mi educación, pero para un novato puede ser útil =) al menos es fácil.
fuente
-
signo antesgrep
. Necesitaba este tipo de solución para extraer archivos específicos de un archivo zip. Primero, obtenga la lista de archivos en un data.frame y obtenga archivos específicos y extráigalos más tarde.lf <- unzip(file, list=T)[,1]; files.shp <- lf[grep(".shp", lf, fixed=T)]
Le da la lista de archivos con ruta completa:
fuente