2014-07-24 7 views
7

यहाँ मेरी आर कोड है फ़ाइल की सामग्री को अधिलेखित करता है :आर लिखने (संलग्न = TRUE)

hello 
world 

समान व्यवहार करता है, तो मैं cat() बजाय write() का उपयोग होता है। क्यूं कर? मैं फाइलों में कैसे जोड़ सकता हूं?

उत्तर

11

आप लेखन के लिए फ़ाइल को खोलने चाहिए:

out = file('testfile', 'w') 
... 

जब आर खोलता है (या नहीं खोलता है) कनेक्शन स्वचालित रूप से थोड़ा जटिल है, लेकिन यह मदद (?file) में विस्तार से बताया है।

यदि आप 'w' पास नहीं करते हैं, तो प्रत्येक write कॉल खुलता है और फ़ाइल बंद करता है, और मुझे लगता है कि यह आपके द्वारा देखे जाने वाले अजीब व्यवहार का कारण बनता है।

आप जोड़कर के लिए किसी मौजूदा फ़ाइल को खोलने के लिए चाहते हैं,

out = file('testfile', 'a') 
+0

अच्छी तरह से और सही मायने में अद्भुत है कि। सबसे पहले फ़ाइल (नाम) फ़ाइल नहीं खोलती है, लेकिन इसके अलावा संलग्न करें = टी जो भी कहता है वह नहीं करता है (यह एक बिल्कुल सही बग है जो मैं कहूंगा, अगर आप सहमत हैं तो उत्सुक)। –

+0

मुझे ऐसा लगता है कि फ़ाइल (...) * पढ़ने * के लिए फ़ाइल खोलती है और, जब आप पहले से पढ़ने के लिए फ़ाइल खोलते हैं, तो समस्या के आसपास काम करने की कोशिश करता है और वर्कअराउंड अजीब परिणाम देता है। 'append = TRUE' ऐसा करने के लिए किया जाता है यदि आप पहले फ़ाइल' फ़ाइल 'के साथ फ़ाइल नहीं खोलते हैं, बल्कि बस' लिखना ("हैलो", "फ़ाइल नाम", append = TRUE) लिखें। – JohnB

+0

ठीक है, मैं समझता हूँ। इस कामकाज को देखते हुए, क्या आप इस बात से सहमत हैं कि इसे बनाने के लिए बेहतर होगा ताकि एक गैर-खुले फ़ाइल कनेक्शन के साथ लिखना (एपेंड = टी) फ़ाइल को ओवरराइट करने के बजाय, खोलने के लिए खोल देगा? ऐसा लगता है कि यह आर –

3

का उपयोग सुराग cat के लिए मदद पृष्ठ में आता है (जो write के लिए एक आवरण है):

append तार्किक। केवल तभी प्रयोग किया जाता है जब तर्क फ़ाइल फ़ाइल (और कोई कनेक्शन या "| cmd") का नाम नहीं है। यदि सही आउटपुट फ़ाइल में जोड़ा जाएगा; अन्यथा, यह फ़ाइल की सामग्री को ओवरराइट कर देगा।

जब कनेक्शन का उपयोग आप कनेक्शन स्थापित करना चाहिए, जोड़कर के लिए खोले जाने के लिए जैसे:

file('testfile', open="a")