Cómo manipular archivos en R

November 18

De vez en cuando, es posible que desee escribir un guión en I que atravesará una carpeta determinada y realizar acciones en todos los datos de los archivos o un subconjunto de archivos en esa carpeta.

Para obtener una lista de los archivos en una carpeta específica, utilice list.files () o (dir). Estas dos funciones hacer exactamente lo mismo, pero por razones de compatibilidad con versiones anteriores, la misma función tiene dos nombres:

> List.files (file.path ("F:", "git", "roxygen2"))
[1] "roxygen2" "roxygen2.Rcheck"
[3] "roxygen2_2.0.tar.gz" "roxygen2_2.1.tar.gz"

Función Descripción
Iist.files Enumera los archivos de un directorio.
list.dirs Enumera los subdirectorios de un directorio.
File.Exists Comprueba si existe un archivo específico en un lugar.
file.create Crea un archivo.
file.remove Elimina archivos (y directorios en los sistemas operativos Unix).
tempfile Devuelve el nombre de un archivo temporal. Si crea un archivo - por ejemplo, con file.create () o write.table () usando este regresó nombre - R creará un archivo en una carpeta temporal.
tempdir Devuelve la ruta de archivo de una carpeta temporal del sistema de archivos.

A continuación, se llega a ejercer todos sus conocimientos acerca de cómo trabajar con los archivos. En el siguiente ejemplo, primero debe crear un archivo temporal, a continuación, guardar una copia de la trama de datos del iris para este archivo. Para comprobar que el archivo está en el disco, a continuación, lea el archivo recién creado a una nueva variable e inspeccionar esta variable. Por último, se elimina el archivo temporal del disco.

Comience usando la función tempfile () para devolver un nombre a una cadena de caracteres con el nombre de un archivo en una carpeta temporal del sistema:

> My.file <- tempfile ()
> My.file
[1] "C: \\ \\ Usuarios Andrie \\ \\ AppData Local \\ \\ temp file14d4366b6095 RtmpGYeLTj \\"

Observe que el resultado es puramente una cadena de caracteres, no un archivo. Este archivo todavía no existe en ninguna parte. A continuación, se guarda una copia de los iris de tramas de datos a my.file utilizando la función write.csv (). A continuación, utilice list.files () para ver si R creó el archivo:

> Write.csv (iris, file = my.file)
> List.files (tempdir ())
[1] "file14d4366b6095"

Como se puede ver, R creó el archivo. Ahora usted puede utilizar read.csv () para importar los datos a una nueva variable llamada file.iris:

> File.iris <- read.csv (my.file)

Utilice str () para investigar la estructura de file.iris. Como file.iris esperado es un data.frame de 150 observaciones y seis variables. Seis variables, dice usted? Sí, seis, aunque el iris originales sólo tiene cinco columnas.

Lo que sucedió aquí fue que el valor por defecto de los row.names argumento de read.csv () es row.names = TRUE. (Puede confirmar esto tomando una mirada cercana a la Ayuda para read.csv ()?). Así, R salvó a los nombres de las filas originales de iris a una nueva columna llamada X:

> Str (file.iris)
'Hoja.de.datos': 150 obs. de 6 variables:
$ X: int 1 2 3 4 5 6 7 8 9 10 ...
$ Sepal.Length: num 5,1 4,9 4,7 4,6 5,4 4,6 5 5 4,4 4,9 ...
$ Sepal.Width: num 3 3,5 3,2 3,1 3,6 3,9 3,4 3,4 2,9 3,1 ...
$ Petal.Length: num 1,4 1,4 1,3 1,5 1,4 1,7 1,4 1,5 1,4 1,5 ...
$ Petal.Width: num 0,2 0,2 ​​0,2 ​​0,2 ​​0,2 ​​0,4 0,3 0,2 0,2 ​​0,1 ...
$ Especie: Factor w / 3 niveles "setosa", "versicolor", ..: 1 1 1 1 1 1 1 1 1 1 ...

Para salir de su sistema de archivos en su orden original, puede utilizar file.remove () para eliminar el archivo temporal:

> File.remove (my.file)
> List.files (tempdir ())
personaje (0)

Como se puede ver, el resultado de list.files () es una cadena de caracteres vacía, porque el archivo ya no existe en esa carpeta.