いくつかの調査の後、私は次のことがうまくいくことを発見しました:
_unlink("mydir")
_
再帰的に削除する場合は、recursive
オプションを使用する必要があります。
_unlink("mydir", recursive=TRUE)
_
ただし、recursive
オプションなしのunlink("mydir")
のみでは、mydir
にサブディレクトリが含まれる場合、出力が生成されないことに注意してください。dirsは削除されませんが、警告。ただ何も:
_> 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)
などで試してみましたが、運はありませんでした。
ヘルプ?unlink
を参照してください:
値
成功の場合は0、失敗の場合は1、目に見えない。存在しないファイルを削除しないことは失敗ではなく、recursive = FALSEの場合にディレクトリを削除することもできません。ただし、xの欠損値は失敗と見なされます。
foo
フォルダーがある場合、recursive=TRUE
なしのunlink
呼び出しは1
を返します。
実際の動作はrm -f
に似ているため、存在しないファイルのリンクを解除すると0が返されることに注意してください。
reallyエラーメッセージを表示する必要がある場合のラッパー関数を次に示します。
.unlink <- function(x, recursive = FALSE, force = FALSE) {
if (unlink(x, recursive, force) == 0)
return(invisible(TRUE))
stop(sprintf("Failed to remove [%s]", x))
}
これにつまずく人のために、私は通常ここでシステムコマンドを使うことに頼ります。
unlinkはフォルダの内容を削除します-ただし、ルートフォルダ自体は保持します。
以下は、単純な核オプションです-フォルダを完全に削除する(多くの場合、これが必要です)-コンポーネントが簡単に見えるように書かれています:
Loc <- "mydir"
system(paste0("rm -r ", Loc))
単に
unlink("mydir") # will delete directory called 'mydir'