如何删除R中的目录?
How to remove a directory in R?
经过一些研究,我发现以下方法有效:
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"
有没有办法获得任何一种 "notification",就像您在 UNIX 系统中获得的那样?
$ rmdir test
rmdir: failed to remove «test»: Directory not empty
我正在使用 R 版本 3.1.2 (2014-10-31)。我尝试玩 options(warn=1)
等但没有运气。
查看帮助 ?unlink
:
Value
0 for success, 1 for failure, invisibly. Not deleting a non-existent
file is not a failure, nor is being unable to delete a directory if
recursive = FALSE. However, missing values in x are regarded as
failures.
在有文件夹 foo
的情况下,没有 recursive=TRUE
的 unlink
调用将 return 1
.
请注意,实际上行为更像 rm -f
,这意味着取消链接不存在的文件将 return 0.
如果您确实需要查看错误消息,这里有一个包装函数供您使用:
.unlink <- function(x, recursive = FALSE, force = FALSE) {
if (unlink(x, recursive, force) == 0)
return(invisible(TRUE))
stop(sprintf("Failed to remove [%s]", x))
}
对于那些遇到问题的人,我通常在这里使用 'shell' 命令来完全删除文件夹。
如果文件夹非空,使用 'system' 将打印 127 错误。
以下是简单的核选项-整个删除文件夹(不问问题):
Loc <- "C:/file has spaces/hence the form below/"
shell( glue::glue("rmdir /s /q \"{Loc}\" ") )
简单
unlink("mydir", recursive = TRUE) # will delete directory called 'mydir'
经过一些研究,我发现以下方法有效:
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"
有没有办法获得任何一种 "notification",就像您在 UNIX 系统中获得的那样?
$ rmdir test
rmdir: failed to remove «test»: Directory not empty
我正在使用 R 版本 3.1.2 (2014-10-31)。我尝试玩 options(warn=1)
等但没有运气。
查看帮助 ?unlink
:
Value
0 for success, 1 for failure, invisibly. Not deleting a non-existent file is not a failure, nor is being unable to delete a directory if recursive = FALSE. However, missing values in x are regarded as failures.
在有文件夹 foo
的情况下,没有 recursive=TRUE
的 unlink
调用将 return 1
.
请注意,实际上行为更像 rm -f
,这意味着取消链接不存在的文件将 return 0.
如果您确实需要查看错误消息,这里有一个包装函数供您使用:
.unlink <- function(x, recursive = FALSE, force = FALSE) {
if (unlink(x, recursive, force) == 0)
return(invisible(TRUE))
stop(sprintf("Failed to remove [%s]", x))
}
对于那些遇到问题的人,我通常在这里使用 'shell' 命令来完全删除文件夹。
如果文件夹非空,使用 'system' 将打印 127 错误。
以下是简单的核选项-整个删除文件夹(不问问题):
Loc <- "C:/file has spaces/hence the form below/"
shell( glue::glue("rmdir /s /q \"{Loc}\" ") )
简单
unlink("mydir", recursive = TRUE) # will delete directory called 'mydir'