2016-07-29 119 views
0

出於工作目的,我創建了一項新功能,它可以自動測試文件夾(其文件路徑指定的名稱)是否存在: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) 
} 
} 

一個例子是:

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

這是應該建立一個在父母的文件夾「R」,如果該文件夾不存在名爲「樣本」文件夾中,並與更換一個新的文件夾,如果存在。

但是,我一直試圖用後一種情況,即替換現有的文件夾。昨天,我使用這段代碼嘗試創建一個不存在於「Sample」文件夾中的文件夾(比如「Plots」)。它不是創建一個名爲「Plots」的文件夾,而是檢測到父文件夾 - 「Sample」存在並開始刪除該文件夾中包含的每個文件。之後,它繼續刪除上部文件夾中的所有文件 - 「R」 - 。在刪除我的(D :)驅動器之前,我必須取消代碼。

它適用於替換現有的文件夾,但不適用於創建新的文件夾。任何人有任何想法如何解決這個功能,或者做一個新的?

感謝

+1

你的功能似乎沒有被正確定義。你爲什麼在第一個'if'語句中調用'make.dir'? – ytk

+0

@ytk我正在從這個線程(最後一個)的答案http://stackoverflow.com/questions/4216753/check-existence-of-directory-and-create-if-doesnt-exist –

+0

非常盲目,我猜測。現在你指出了這一點,我可能會再次嘗試我的功能,而沒有異常的電話 –

回答

0

正如@ytk在上面的評論中指出,在第一if聲明呼籲make.dir使功能去野外。刪除解決了這個問題。謝謝你,ytk