2010-03-25 13 views
6

Quiero escribir algunos datos temporales en el disco en un paquete R, y quiero estar seguro de que se puede ejecutar en todos los sistemas operativos sin asumir que el usuario tenga derechos de administrador. ¿Existe una función R existente que pueda proporcionar una ruta a un directorio temporal en todos los sistemas operativos principales? ¿O una forma de referenciar el directorio de inicio de un usuario?Escribiendo datos temporales de R

De lo contrario, yo estaba pensando en probar esto:

Sys.getenv("temp") 

supongo que no puedo esperar que las personas tienen acceso de escritura a sus ubicaciones R, de lo contrario podría hacer referencia a una ruta dentro del directorio del paquete: .find.package("package.name") .

Respuesta

10

Sí, lo hay: tempdir.

Esto devolverá un directorio específico de sesión dentro del directorio temporal del usuario. (Por lo tanto, da el mismo valor cada vez que lo llama dentro de una sesión R específica. Cierre R y reinicie, y le dará un directorio diferente.)

pathological::temp_dir proporciona un envoltorio más fácil de usar.

+1

Perfecto, gracias! Nota para uno mismo: pruebe apropos antes de hacer una pregunta: 'apropos (" temp ")' hubiera devuelto 'tempdir' y' tempfile'. – Shane

-1

Después de pensar un poco más, creo que esto debería funcionar:

path.expand("~") 

que le dará al directorio principal, que debe tener acceso de escritura.

+0

Eso le da el directorio de inicio, no el directorio de trabajo. – hadley

+3

Me enojaría más que si el código de alguien que estoy ejecutando comenzara a escribir archivos temporales en mi directorio personal. –

+0

En este caso, estos pueden ser archivos que el usuario desearía conservar, pero yo les daría la opción. Esto es realmente acerca de tener una buena configuración predeterminada. Voy a usar 'tempdir' en su lugar. – Shane

Cuestiones relacionadas