我正在寻找一种方法来防止在使用R中的save()和save.image()函数时意外覆盖文件。
file.exists()
来测试文件是否存在,如果存在,则在名称后面添加一个字符串。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()
,用户可能不知道函数覆盖,因此我不会覆盖保存。
正如Vince所写,你可以使用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()
的方法。