在R中,unlink和file.remove有什么区别?

时间:2012-03-27 11:46:05

标签: r

R提供了两个从文件系统中删除文件(和文件夹)的功能:

  • unlink
  • file.remove

差异是什么,或者确实何时使用除了unlink除了unlink以外的其他参数之外,并不完全明显。

阅读这些函数的源代码并没有多大帮助,因为它们都只是调用编译的C函数。

有什么区别?您应该何时使用file.remove优先于{{1}},反之亦然?

2 个答案:

答案 0 :(得分:20)

我的猜测很简单就是unlink出现在S中,因为它引用了Becker,Chambers和Wilks(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的长现有代码而维护。除此之外,只需选择最适合您的需求(或习惯)的那个。

答案 1 :(得分:0)

我认为函数行为的主要区别在于它们如何处理当前打开的文件,因此不能立即删除:

  • unlink() 在文件未在任何其他上下文中打开时立即将其标记为删除;
  • file.remove() 保持文件完好无损,返回 FALSE,但抛出警告。

相关:how to remove the file when "permisson denied" in R?