经过一番研究后,我发现以下情况有效:
unlink("mydir")
如果要以递归方式删除,则必须使用recursive
选项:
unlink("mydir", recursive=TRUE)
但是,我注意到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"
有没有办法获得任何类型的“通知”,就像你在UNIX系统中得到的那样?
$ rmdir test
rmdir: failed to remove «test»: Directory not empty
我正在使用R版本3.1.2(2014-10-31)。我试过玩options(warn=1)
等但没有运气。
答案 0 :(得分:32)
请参阅帮助?unlink
:
值
0表示成功,1表示失败,无形。不删除不存在的 文件不是故障,也不能删除目录 递归= FALSE。但是,x中的缺失值被视为 故障。
如果文件夹为foo
,则不unlink
的{{1}}来电将返回recursive=TRUE
。
请注意,实际上行为更像1
,这意味着取消链接不存在的文件将返回0.
答案 1 :(得分:6)
如果您真的需要查看错误信息,这里有一个包装函数:
.unlink <- function(x, recursive = FALSE, force = FALSE) {
if (unlink(x, recursive, force) == 0)
return(invisible(TRUE))
stop(sprintf("Failed to remove [%s]", x))
}
答案 2 :(得分:0)
对于那些绊脚石的人,我通常会在这里使用系统命令。
取消链接将删除文件夹内容-但保留根文件夹本身。
以下是最简单的核选项-完全删除文件夹(这通常是我所需要的)-写成便于您轻松查看组件:
Loc <- "mydir"
system(paste0("rm -r ", Loc))
答案 3 :(得分:0)
简单
*Filesystem> splitOnWhitespace "a1"
["a1"]
*Filesystem> splitOnWhitespace "a1 a2"
["a1","a2"]
*Filesystem> splitOnWhitespace "a1 a2 a3"
*** Exception: src/Filesystem.hs:(271,1)-(275,24): Non-exhaustive patterns in function concatOnBackslash
*Filesystem> splitOnWhitespace "a1 a2 a3 a4"
*** Exception: src/Filesystem.hs:(271,1)-(275,24): Non-exhaustive patterns in function concatOnBackslash