2012-03-27 26 views
25

R proporciona dos funciones para eliminar archivos (y carpetas) desde el sistema de archivos:En R, ¿cuál es la diferencia entre unlink y file.remove?

  • unlink
  • file.remove

No está del todo claro cuáles son las diferencias, o incluso cuándo usar el cual , aparte de eso, unlink toma algunos argumentos adicionales.

Leer el código fuente de estas funciones no ayuda mucho, ya que ambas simplemente llaman a una función C compilada.

¿Cuáles son las diferencias? ¿Cuándo debe usar unlink con preferencia a file.remove, o viceversa?

+0

puede encontrar la implementación aquí: http://svn.r-project.org/R/trunk/src/main/platform.c – kohske

+9

'unlink' eliminará directorios, pero' file.remove' solo eliminará vacías, y no en Windows – James

+6

FYI: En noticias R, cambios en la versión 2.15.0: "El comportamiento de unlink (recursive = TRUE) para un enlace simbólico a un directorio ha cambiado: ahora elimina el enlace en lugar del directorio contenidos (como lo hace rm -r). " – GSee

Respuesta

19

Mi suposición es simplemente que unlink estuvo presente en S, ya que hace referencia a Becker, Chambers y Wilks (1988), mientras que file.remove (y archivo.copy, archivo.create, etc.) han sido parte de R desde el principio para proporcionar una familia de funciones para la manipulación general de archivos.

unlink corresponde a una función Unix muy antigua (y ciertamente existía cuando la versión 1988 de S apareció): http://en.wikipedia.org/wiki/Unlink_(Unix)

Así, unlink existe para la compatibilidad con S, file.remove es allí como parte de R y ambos se mantienen para admitir el código existente de S y R. Además de eso, simplemente elija el que mejor se adapte a sus necesidades (o hábitos).

Cuestiones relacionadas