आर

2011-12-09 44 views
10

में खाली सीएसवी फ़ाइल बनाएं मेरे पास एक आर स्क्रिप्ट है जो एकाधिक डेटासेट पर फ़ंक्शंस का एक सेट चलाती है और एकाग्रता-प्रतिक्रिया मॉडल का एक सेट बनाती है। मैं क्या करना चाहता हूं मॉडल पैरामीटर और अन्य परिणामों को एक सीएसवी फ़ाइल में सहेजना है।आर

मेरी योजना स्क्रिप्ट को एक खाली सीएसवी फ़ाइल बनाने के लिए है और फिर जैसे ही स्क्रिप्ट प्रगति होती है, परिणाम उस सीएसवी फ़ाइल में संलग्न होते हैं। प्रत्येक बार जब स्क्रिप्ट चलती है तो मैं परिणाम ओवरराइट करना चाहता हूं।

मैं

system("copy /y NUL results.csv > NUL") 

का उपयोग कर फ़ाइल बनाने के लिए एक खाली फ़ाइल बनाने की कोशिश की है, लेकिन फ़ाइल नहीं बनाई गई है। यह आदेश (यानी, copy/y NUL results.csv > NUL) सीधे विंडोज टर्मिनल में चलाते समय ठीक से काम करता है।

क्या मुझे कुछ आसान याद आ रही है? सिस्टम विंडोज एक्सपी है।

धन्यवाद सब!

उत्तर

17

क्या file.create() के साथ गलत है, जो ऑपरेटिंग सिस्टम के बीच पोर्टेबल है है?

file.create("my.csv") 
# [1] TRUE 

फिर आप फ़ाइल में संलग्न कर सकते हैं, उदा। write.table() को append=TRUE तर्क का उपयोग, शायद इस तरह:

df <- data.frame(a=1:4, b=4:1) 
write.table(df, file="my.csv", sep=",", row.names=FALSE, append=TRUE) 
write.table(df, file="my.csv", sep=",", row.names=FALSE, 
      col.names=FALSE, append=TRUE) 

संपादित आप प्रत्येक फाइल करने के लिए लेखन की एक टन कर रही होगी, तो यह एक बार फाइल करने के लिए एक कनेक्शन को खोलने के लिए काफी समय बचा सकते हैं, और केवल जब आप पूरा कर लें तो इसे बंद करें। यदि ऐसा नहीं है, तो उपरोक्त दृष्टिकोण ठीक काम करता है।

+4

इसके अलावा, 'apropos ("file \\।")' कोशिश करें ' बेस आर –

+0

में उपलब्ध कुछ अन्य फ़ाइल मैनिपुलेशन सुविधाओं को देखें, यह काम करता है लेकिन मुझे यह प्राप्त हो रहा है: 'write.table (df, file = "my.csv", sep = ",", row.names = FALSE में , फाइल करने के लिए स्तंभ नाम जोड़ना ' – Aerox

0

कैसे बस के बारे में

echo > results.csv 
+0

मुझे 'echo> results.csv' का उपयोग करके समान परिणाम मिलते हैं। मुझे लगता है कि समस्या वास्तविक कमांड चलाने के बजाए सिस्टम कॉल के साथ है, जैसा कि किसी भी कमांड को stdout (उदाहरण के लिए, 'सिस्टम ("इको हैलो!") का उत्पादन नहीं करता है। – sinclairjesse

4

क्योंकि यह शेल कमांड है, इसलिए आपको सिस्टम के बजाय खोल का उपयोग करना चाहिए।

shell("copy /y NUL results.csv > NUL") 

संपादित करें। अधिक पोर्टेबल समाधान:

cat(NULL,file="results.csv") 
+2

यह ऑपरेटिंग सिस्टम में पोर्टेबल नहीं है, इस प्रकार दूर ले जा रहा है आर –

+0

गुड प्वाइंट डिर्क के छुपे हुए खजाने में से एक, इस के प्रकाश में मैं जोश के जवाब को स्वीकार करूंगा। – sinclairjesse

+0

सिस्टम विंडोज एक्सपी है! –