使用save()或save.image()时防止覆盖文件

时间:2009-10-09 03:43:16

标签: r file

我正试图在R中使用save()和save.image()函数时找到一种方法来阻止意外覆盖文件。

2 个答案:

答案 0 :(得分:7)

使用file.exists()测试文件是否存在,如果存在,请在名称后附加一个字符串。

编辑:

感谢Marek,我会稍微扩展你的想法......他可以添加这个来处理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(),用户可能不知道函数覆盖。

答案 1 :(得分:5)

正如文斯写道,你可以使用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()