En esta leccion, aprendera a examinar su espacio de trabajo local en R (workspace) y a explorar la relacion entre el espacio de trabajo y los archivos.Debido a que los diferentes sistemas operativos tienen diferentes convenciones con respecto a rutas de archivos, las salidas de estos comandos pueden variar de computadora a computadora. Sin embargo, es importante resaltar que R provee de un API (conjunto de comandos comunes) para interactuar con los archivos. De esta manera el codigo funcionara en diferentes computadoras.
Este material esta basado en la leccion de “Workspace and Files” de “R Programming”, paquete swirl. Author: David Kane, Organization: Williams College, Version: 0.1.2.
Comencemos ahora!
Determine el directorio esta utilizando R en este momento, usando getwd().
getwd()
## [1] "D:/DATOS/ejemplos_R/intro_R"
Liste todos los objetos (variables) del espacio de trabajo local ls(). Observara que aun no existen variables creadas.
ls()
## character(0)
Asigne el valor 9 a la variable x, usando x <- 9. Luego observe nuevamente los objetos contenidos en el espacio de trabajo local usando ls().
x <- 9
ls()
## [1] "x"
Liste todos los archivos en el directorio de trabajo usando “list.files()” o dir().
list.files()
## [1] "mytest2.R" "mytest3.R" "workspace.docx" "workspace.html"
## [5] "workspace.Rmd"
dir()
## [1] "mytest2.R" "mytest3.R" "workspace.docx" "workspace.html"
## [5] "workspace.Rmd"
A medida que avanzamos con la leccion, puede ir consultando la pagina de ayuda de las funciones. Eche un vistazo a la pagina de ayuda para list.files con el comando “?list.files”. La seccion de See Also muestra funciones complementarias.
?list.files
## starting httpd help server ... done
Use la funcion args() con el nombre de una funcion list.files para conocer que argumentos necesita o require la funcion.
args(list.files)
## function (path = ".", pattern = NULL, all.files = FALSE, full.names = FALSE,
## recursive = FALSE, ignore.case = FALSE, include.dirs = FALSE,
## no.. = FALSE)
## NULL
Ahora, asigne el valor del directorio de trabajo actual a una nueva variable llamada “old.dir”. Al final de la leccion, usaremos old.dir para regresar al directorio original de trabajo.
old.dir <- getwd()
Use dir.create() para crear un directorio llamado “testdir” en el directorio de trabajo actual.
dir.create("testdir")
A partir de ahora, usaremos este nuevo directorio de trabajo, y finalmente lo borraremos. Por ello, establece como directorio de trabajo el directorio “testdir” con el comando setwd().
setwd("testdir")
Cree un archivo en el directorio de trabajo llamado “mytest.R” usando la funcion file.create(). Este archivo sera el unico en el directorio creado. Revise esto listando todos los archivos del directorio de trabajo. Finalmente, revisa si “mytest.R” existe en el directorio de trabajo usando la funcion file exists().
file.create("mytest.R")
## [1] TRUE
list.files()
## [1] "mytest.R" "mytest2.R" "mytest3.R" "testdir"
## [5] "workspace.docx" "workspace.html" "workspace.Rmd"
file.exists("mytest.R")
## [1] TRUE
Este tipo de funciones son excesivas para el uso interactivo. Pero, si esta ejecutando un programa que recorre una serie de archivos y hace algunos procesamiento en cada uno, tendra que comprobar que cada uno existe antes intentar procesarlo.
Observa informacion sobre el archivo “mytest.R” usando file.info(). Puede usar el operador $ — por ejemplo, file.info(“mytest.R”)$mode — para acceder a items especificos.
file.info("mytest.R")
## size isdir mode mtime ctime
## mytest.R 0 FALSE 666 2015-03-08 14:02:56 2015-03-08 14:02:55
## atime exe
## mytest.R 2015-03-08 no
Cambie el nombre del archivo “mytest.R” a “mytest2.R” con file.rename().
file.rename("mytest.R", "mytest2.R")
## [1] TRUE
Su sistema operativo proporciona herramientas mas sencillas para este tipo de tareas, pero tener la capacidad de manipular archivos mediante programacion es util. Puede elimine mytest.R usando file.remove(‘mytest.R’). Tenga en cuenta que esto no funcionara con mytest.R ya que el archivo no existe. Usted ya lo ha cambiado.
Haga una copia de “mytest2.R” a un nuevo archivo llamado “mytest3.R” usando file.copy().
file.copy("mytest2.R", "mytest3.R")
## [1] FALSE
Ahora tiene dos archivos en el directorio de trabajo. Ello no parece muy interesante, pero piense que estuviera trabajando con decenas, cientos o millones de archivos? En este caso, sera absolutamente necesario acceder de forma automatica a los archivos.
Utilice el camino relativo (relative path) al archivo “mytest3.R” usando file.path(). Puede usar file.path para construir caminos a archivos y directorios que sean independientes al sistema operativo. Utilice ‘folder1’y ’folder2’ como argumentos en file.path para hacer que el camino sea independiente a la plataforma.
file.path("mytest3.R")
## [1] "mytest3.R"
file.path("folder1", "folder2")
## [1] "folder1/folder2"
Observe la documentacion de dir.create con “?dir.create”. Note el argumento ‘recursive’ que se utiliza para craear directorios anidados (nested). En este caso ‘recursive’ debe ser TRUE. Ahora cree un directorio en el directorio de trabajo actual llamado “testdir2” y un subdirectorio llamado “testdir3”, todo en un solo comando usando dir.create() y file.path().
?dir.create
dir.create(file.path("testdir2", "testdir3"), recursive = TRUE)
Para borrar un directorio tiene que utilizar el argumento recursive = TRUE con la funcion unlink(). Si no se usa recursive = TRUE, R no sabra que desea borrar el directorio con todo su contenido. Borre el directorio “testdir2” usando unlink().
unlink("testdir2", recursive = TRUE)
Vuelva al directorio de trabajo original usando setwd(). Recuerde que este directorio se almaceno en la variable old.dir.
setwd(old.dir)
Borre el directorio ‘testdir’ con todo su contenido
unlink("testdir", recursive = TRUE)
Ha llegado al final de esta leccion, donde aprendio a examinar espacios de trabajo en R y a trabajar con archivos del sistema