2009-10-09 4 views

Répondre

7

Utilisez file.exists() pour tester si le fichier existe et, si c'est le cas, ajoutez une chaîne au nom.

Edit:

Merci Marek, je vais développer votre idée un peu ... il pourrait ajouter à traiter à la fois save() et save.image()

SafeSave <- function(..., file=stop("'file' must be specified"), overwrite=FALSE, save.fun=save) { 
    if (file.exists(file) & !overwrite) stop("'file' already exists") 
    save.fun(..., file=file) 
} 

Je n'Ecraser Enregistrer .. Si source() a été utilisé dans une session REPL, les utilisateurs peuvent ne pas être conscients de l'écrasement de la fonction.

+0

Est-ce que quelqu'un sait comment créer une boîte de dialogue pour informer l'utilisateur que le fichier à écrire existe déjà? L'utilisateur peut simplement fermer la session R sans le savoir et rien n'est sauvegardé. – ggg

5

Comme Vince l'a écrit, vous pouvez utiliser file.exists() pour vérifier l'existence.

Je propose de remplacer la fonction save d'origine:

save <- function(..., file=stop("'file' must be specified"), overwrite=FALSE) { 
    if (file.exists(file) & !overwrite) stop("'file' already exists") 
    base::save(..., file=file) 
} 

Vous pouvez écrire semblable à remplacer save.image().