1. ホーム
  2. r

Rでディレクトリを削除する方法は?

2023-10-07 14:35:21

質問

いろいろ調べた結果、以下のようにするとうまくいくことがわかりました。

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 システムで得られるような、何らかの "notification" を得る方法はあるでしょうか?

$ rmdir test
rmdir: failed to remove «test»: Directory not empty

Rバージョン3.1.2(2014-10-31)を使用しています。で遊んでみましたが options(warn=1) などで遊んでみましたが、うまくいきません。

どのように解決するのですか?

ヘルプを見る ?unlink :

成功の場合は0、失敗の場合は1、見えないようにする。存在しないファイルを削除しないことは また、ディレクトリの削除ができない場合も を指定した場合、ディレクトリを削除できない場合も同様です。しかし、xの値が欠損している場合は、失敗とみなされる。 失敗とみなされます。

フォルダがある場合 foounlink のない呼び出し recursive=TRUE1 .

なお、実際の動作はもっと rm -f のような動作をします。つまり、存在しないファイルをリンク解除すると 0 を返します。