Cómo manipular archivos en r
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 en 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 () el uso de este nombre- regresó R creará un archivo en una carpeta temporal. |
tempdir | Devuelve la ruta del archivo de una carpeta temporal en su 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 iris trama de datos a este archivo. Para comprobar que el archivo está en el disco, a continuación, lea el archivo que acaba de crear a una nueva variable e inspeccionar esta variable. Por último, se elimina el archivo temporal del disco.
Comience usando la tempfile () función para devolver un nombre a una cadena de caracteres con el nombre de un archivo en una carpeta temporal en su sistema:
> My.file lt; - 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 no existe aún ninguna parte. A continuación, se guarda una copia de la trama de datos iris a mi archivo usando el write.csv () función. 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 lt; - read.csv (my.file)
Usar str () para investigar la estructura de file.iris. Como se esperaba file.iris es un data.frame de 150 observaciones y seis variables. Seis variables, dice usted? Sí, seis, aunque el original iris sólo tiene cinco columnas.
Lo que sucedió aquí fue que el valor por defecto del argumento row.names de read.csv () es row.names = TRUE. (Puede confirmar esto tomando una mirada cercana a la Ayuda ?read.csv ().) Por lo tanto, R guarda los nombres de fila originales de iris a una nueva columna llamada X:
> Str (file.iris) 'data.frame': 150 obs. de 6 variables: $ X: int 1 2 3 4 5 6 7 8 9 10 ... $ Sepal.Length: num 4,9 4,7 4,6 5,1 5,4 4,6 5 5 4,4 4,9 ... $ Sepal.Width: num 3,5 3 3,2 3,1 3,9 3,4 3,4 3,6 2,9 3,1 ... $ Petal.Length: num 1,4 1,3 1,5 1,4 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 ... $ Especies: 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 borrar el archivo temporal:
> File.remove (my.file)> list.files (tempdir ()) carácter (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.