Manipulación de ficheros y directorios con R
septiembre 12, 2012 Deja un comentario
Una de las características que más me gustan de R es su capacidad de interacturar con ficheros y directorios, algo que me permite desarrollar mi trabajo de forma ordenada por muchas figuras y tablas que genere.
En este post voy a describir las principales funciones y sus argumentos y vamos a crear una rutina de trabajo sencilla en la que podemos comprobar la utilidad de estas funciones.
Supongamos que tenemos que trabajar con la base de datos iris que tiene 5 variables (4 cuantitativas y una cualitativa) y queremos tenerlo ordenado de la siguiente manera: una carpeta principal [analisis] y tres subcarpetas [setosa], [versicolor] y [virginica]. Dentro de cada carpeta guardaremos un gráfico con un boxplot de las cuatro variables cuantitativas para la categoría estudiada y un fichero csv con los datos utilizados.
Después seleccionamos los dos ficheros (la figura y el fichero csv) y los comprimimos en un fichero zip y eliminamos los ficheros. De esta manera tenemos nuestros resultados ordenados y sin ocupar mucho espacio, algo muy interesante si generamos muchas tablas a las que accederemos de forma esporádica pero que necesitamos tener creadas.
rutaoriginal <- getwd()
especies <- levels(iris$Species)
for (i in especies) {
setwd(rutaoriginal)
dir.create(paste(rutaoriginal,»/»,i,sep=»»),showWarnings=FALSE)
setwd(paste(rutaoriginal,»/»,i,sep=»»))
subiris <- iris[iris$Species==i,]
windows(7,7)
boxplot(subiris[,1:4],
main=i)
savePlot(file=paste(i,»_boxplot.jpeg»,sep=»»),type=»jpeg»)
dev.off()
write.csv(subiris,file=paste(i,».csv»,sep=»»))
ficheros <- list.files()
zip(zipfile=paste(i,».zip»,sep=»»),
files=ficheros)
file.remove(ficheros)
unzip(zipfile=paste(i,».zip»,sep=»»),
files=paste(i,».csv»,sep=»»))
}
Las funciones de manipulación de ficheros que hemos utilizado son:
- setwd(): Nos sitúa en la ruta de trabajo que pasemos como argumento.
- dir.create(): Crea un directorio en la ruta de trabajo. El argumento showWarnings es para que nos avise si ya existe el directorio.
- list.files(): Realiza un listado de los ficheros que hay en el directorio de
trabajo. - zip(): Crea un zip con los ficheros que pasemos como argumento.
- file.remove(): Elimina los ficheros.
- unzip(): Descomprimimos un fichero del fichero zip.
COMENTARIOS RECIENTES