Предотвращение перезаписи файлов при использовании save () или save.image () - PullRequest
9 голосов
/ 09 октября 2009

Я пытаюсь найти способ остановить случайную перезапись файлов при использовании функций save () и save.image () в R.

Ответы [ 2 ]

7 голосов
/ 09 октября 2009

Используйте file.exists(), чтобы проверить, существует ли файл, и, если он есть, добавить строку к имени.

Edit:

Спасибо, Марек, я немного расширю твою идею ... он мог бы добавить это, чтобы иметь дело как с save(), так и с 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)
}

Я бы не перезаписывал сохранение ... если бы в сеансе REPL использовалось source(), пользователи могут не знать о перезаписи функции.

5 голосов
/ 09 октября 2009

Как писал Винс, вы можете использовать file.exists() для проверки существования.

Предлагаю заменить оригинальную save функцию:

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

Вы могли бы написать подобное заменить save.image().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...