2012-03-27 21 views
25

आर फाइल सिस्टम से फ़ाइलें (और फ़ोल्डर) को हटाने के लिए दो कार्य प्रदान करता है:आर में, अनलिंक और file.remove के बीच क्या अंतर है?

  • unlink
  • file.remove

यह पूरी तरह से स्पष्ट क्या मतभेद हैं, या वास्तव में जब उपयोग करने के लिए नहीं है जो , unlink के अलावा कुछ अतिरिक्त तर्क लेते हैं।

इन कार्यों के लिए स्रोत कोड पढ़ना बहुत मदद नहीं करता है, क्योंकि दोनों बस संकलित सी फ़ंक्शन को कॉल करते हैं।

अंतर क्या हैं? unlink को file.remove पर प्राथमिकता में कब उपयोग करना चाहिए, या इसके विपरीत?

+0

आप यहां कार्यान्वयन पा सकते हैं: http://svn.r-project.org/R/trunk/src/main/platform.c – kohske

+9

'अनलिंक' निर्देशिका हटा देगा, लेकिन 'file.remove' केवल हटा देगा खाली वाले, और विंडोज – James

+6

पर नहीं FYI: आर समाचार में, संस्करण 2.15.0 में परिवर्तन: "निर्देशिका के प्रतीकात्मक लिंक के लिए अनलिंक (रिकर्सिव = TRUE) का व्यवहार बदल गया है: अब यह निर्देशिका के बजाय लिंक को हटा देता है सामग्री (जैसे आरएम-आर करता है)। " – GSee

उत्तर

19

मेरा अनुमान है कि unlink एस में मौजूद था, क्योंकि यह बेकर, चेम्बर्स और विल्क्स (1 9 88) का संदर्भ देता है, जबकि file.remove (और file.copy, file.create, आदि) आर के शुरुआती दिनों से आर का हिस्सा रहा है सामान्य फ़ाइल हेरफेर के लिए कार्यों का एक परिवार प्रदान करने के लिए।

unlink एक बहुत पुरानी यूनिक्स समारोह से मेल खाती है (और निश्चित रूप से अस्तित्व में जब एस के 1988 संस्करण दिखाई दिया): http://en.wikipedia.org/wiki/Unlink_(Unix)

तो, unlink एस के साथ संगतता के लिए नहीं है, file.remove आर के एक भाग के रूप में होती है और दोनों को एस और आर से लंबे समय तक मौजूदा कोड का समर्थन करने के लिए बनाए रखा जाता है। इसके अलावा बस अपनी जरूरतों (या आदतों) के अनुरूप सर्वोत्तम विकल्प चुनें।

संबंधित मुद्दे