我正试图在R中使用save()和save.image()函数时找到一种方法来阻止意外覆盖文件。
答案 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()
。