2016-07-29 22 views
0

作業の目的で、フォルダ(ファイルパスで指定された名前のフォルダ)が存在するかどうかを自動的にテストする新しい関数を作成しました:RのDir.create関数は、コンピュータ上の親フォルダのファイルを消去します

make.dir <- function(fp) { 

# If not existing, create a new one 
if(!file.exists(fp)) { 
make.dir(dirname(fp)) 
dir.create(fp, recursive = FALSE, showWarnings = FALSE) 
} else { 

# If existed, delete and replace with a new one 
unlink(fp, recursive = FALSE) 
dir.create(fp) 
} 
} 

例は次のようになります。これは、親フォルダの「R」というフォルダが存在しなかった場合に「サンプル」という名前のフォルダを作成することになっている

make.dir("D:/Work/R/Sample") 

、そして新しいものとフォルダを置き換え、存在するならば。

しかし、私は後者の場合、つまり既存のフォルダを置き換えることでこれを試しています。昨日、私はこのコードを "Sample"フォルダ(例えば "Plots")にあらかじめ存在しないフォルダにしようとしました。 「Plots」という名前のフォルダを作成する代わりに、親フォルダ「Sample」が存在し、そのフォルダに含まれるすべてのファイルを削除し始めたことが検出されました。その後、上位フォルダ「R」内のすべてのファイルも削除されました。私は私の(D :)ドライブを削除する前にコードをキャンセルしなければならなかった。

既存のフォルダを置き換えるのにうまく動作しますが、新しいフォルダを作成することはできません。誰でも関数を修正する方法や新しい関数を作成する方法はありますか?上記のコメントで@ytkで指摘したように

おかげ

+1

あなたの機能が正しく定義されていないようです。最初の 'if'文で' make.dir'を呼び出すのはなぜですか? – ytk

+0

@ytk私はこのスレッド(最後のもの)からの答えに従っていたhttp://stackoverflow.com/questions/4216753/check-existence-of-directory-and-create-if-doesnt-exist –

+0

かなり盲目的に、私は推測。あなたがそれを指摘したので、私は異常な呼び出しなしで再び機能を試みるかもしれません –

答えて

0

、最初if文でmake.dirのための呼び出しは、機能が野生行くことができます。それを削除することで問題は解決しました。ありがとう、ytk

関連する問題