2012-03-27 214 views
25

[R提供了兩個功能從文件系統中刪除文件(文件夾):在R中,unlink和file.remove有什麼區別?

  • unlink
  • file.remove

這不是完全明顯的區別是什麼,或甚時所使用的,除此之外unlink需要一些額外的參數。

閱讀這些函數的源代碼並沒有多大幫助,因爲它們都只是簡單地調用一個編譯的C函數。

有什麼區別?什麼時候應該使用unlink而不是file.remove,反之亦然?

+0

,你可以在這裏找到實現:http://svn.r-project.org/R/trunk/src/main/platform.c – kohske 2012-03-27 11:51:19

+9

'unlink'將刪除目錄,但'file.remove'只會刪除空的,而不是在Windows上 – James 2012-03-27 12:19:35

+6

僅供參考:在R新聞中,版本2.15.0中的更改:「鏈接到目錄的符號鏈接的行爲(recursive = TRUE)已更改:它現在刪除鏈接而不是目錄內容(就像rm -r一樣)。「 – GSee 2012-03-27 12:30:21

回答

19

我的猜測是簡單的unlink存在於S,因爲它引用貝克爾,庭和威爾克斯(1988),而file.remove(和file.copy,file.create等),因爲在初期一直的R部分以便爲通用文件操作提供一系列功能。

unlink對應於非常舊的Unix函數(和肯定存在時的1988年版本S的出現):http://en.wikipedia.org/wiki/Unlink_(Unix

所以,unlink是有帶S的相容性,file.remove有作爲R的部分和兩者都是爲了支持S和R的長期存在的代碼而被維護的。除此之外,只需選擇最適合您需求(或習慣)的代碼即可。