经过一些研究,我发现以下工作:
unlink("mydir")
Run Code Online (Sandbox Code Playgroud)
recursive如果要以递归方式删除,则必须使用该选项:
unlink("mydir", recursive=TRUE)
Run Code Online (Sandbox Code Playgroud)
但是,我注意到unlink("mydir"),如果没有recursive选项,单独mydir包含子目录时不会产生任何输出:它不会删除目录但不显示任何警告.根本不值一提:
> list.dirs()
[1] "." "./r"
> dir.create("test")
> dir.create("test/test2")
> list.dirs()
[1] "." "./r" "./test" "./test/test2"
> unlink("test") ######### here I would expect a warning #########
> list.dirs()
[1] "." "./r" "./test" "./test/test2"
> unlink("test", recursive=TRUE)
> list.dirs()
[1] "." "./r"
Run Code Online (Sandbox Code Playgroud)
有没有办法得到任何类型的"通知",就像你在UNIX系统中得到的那样?
$ rmdir test
rmdir: failed to remove «test»: Directory not empty
Run Code Online (Sandbox Code Playgroud)
我使用R版本3.1.2(2014-10-31).我试过玩options(warn=1)等但没有运气.
zw3*_*324 37
见帮助?unlink:
值
0表示成功,1表示失败,无形.不删除不存在的文件不是失败,如果递归= FALSE也不能删除目录.但是,x中的缺失值被视为失败.
在有文件夹foo的unlink情况下,recursive=TRUE不会返回呼叫1.
请注意,实际上行为更像是rm -f,这意味着取消链接不存在的文件将返回0.
如果你真的需要看错误信息,这里有一个包装函数:
.unlink <- function(x, recursive = FALSE, force = FALSE) {
if (unlink(x, recursive, force) == 0)
return(invisible(TRUE))
stop(sprintf("Failed to remove [%s]", x))
}
Run Code Online (Sandbox Code Playgroud)
简单地
unlink("mydir", recursive = TRUE) # will delete directory called 'mydir'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28005 次 |
| 最近记录: |