はじめに
R言語でのフォルダ操作(作成・削除・コピー・名前変更・移動)に関する関数について、色々とまとめてみた*1。
フォルダ・ディレクトリの作成・削除・コピー・名前変更
フォルダの作成・削除について
#フォルダの存在確認 dir.exists("01_test") #[1] FALSE => 「01_test」というフォルダが存在していない #フォルダの作成 dir.create("01_test") dir.exists("01_test") #[1] TRUE => 「01_test」というフォルダが存在している #フォルダの削除: フォルダを`file.remove`で削除する file.remove("01_test") #[1] TRUE dir.exists("01_test") #[1] FALSE
フォルダのコピー・フォルダ削除(file.removeで消せない時の対応)
#新たに、2つのフォルダを作成 dir.create("03_test") dir.create("04_test") #フォルダのコピー: フォルダを`file.copy`でコピーする file.copy("03_test", "04_test", recursive=TRUE) #フォルダの削除 file.remove("03_test", recursive=T) #[1] TRUE file.remove("04_test", recursive=T) #[1] FALSE # 警告メッセージ: # file.remove("04_test", recursive = T) で: # ファイル '04_test' を削除できません、理由は 'Directory not empty' です #file.removeで消せない場合には、unlinkで削除する。 unlink("04_test", recursive = T)
フォルダ名を変更する
#新たに、2つのフォルダを作成 dir.create("05_test") #フォルダ名の変更: `file.rename`でリネイムする file.rename(from="05_test", to="06_test")
複数階層のフォルダを作成する
#これはエラーとなる dir.create("06_test/a/b/c") # 警告メッセージ: # dir.create("06_test/a/b/c") で: # フォルダ '06_test/a/b/c' を作成できません、理由は 'No such file or directory' です #複数階層のフォルダ作成の場合には、`recursive = T`とする dir.create("06_test/a/b/c", recursive = T)
こんな感じで、フォルダ階層が作成される。
フォルダが存在しない時にだけ、フォルダの作成を実行する
if(!dir.exists("01_test")){ dir.create("01_test") }
まとめ
フォルダの作成・削除・コピー・名前変更 について、R縛りで実行するコマンドをまとめてみた。
実際には、systemを使ってシェルコマンドでやる方がやりやすいのだが。。
【Rのジミ〜な小技シリーズ】
*1:Rコマンドでのフォルダ移動は、なかなかややこしくて、また検討します