2013-01-18 10 views
41

मैं अपने लंबे समय तक चलने वाले एल्गोरिदम के दौरान प्रगति संकेतक आउटपुट करना चाहता हूं। मैं अपने एल्गोरिदम के भीतर से एक प्रगति मूल्य को आसानी से "बबल अप" कर सकता हूं (उदाहरण के लिए विशेष रूप से इस उद्देश्य के लिए प्रदान किए गए फ़ंक्शन कॉलबैक का आविष्कार करके), लेकिन वास्तविक पाठ आउटपुट प्रक्रिया में कठिनाई है। print पर प्रत्येक कॉल एक नई लाइन बनाता है, और प्रत्येक [1] के साथ prefixed।नई लाइनों के बिना आर कंसोल में टेक्स्ट आउटपुट कैसे करें?

लाइन ब्रेक शुरू किए बिना समय में अलग-अलग क्षणों पर प्रिंट करने का कोई तरीका है?

ठोस होने के लिए, मैं एक "एनीमेशन" प्राप्त करना चाहता हूं जो दो अलग-अलग समय में देखा गया हो।

0%... 

...

0%...2%...4%... 

उत्तर

46

उपयोग cat() बजाय print():

cat("0%") 
cat("..10%") 

आउटपुट:

0%..10% 
7

बाह, Andrie मुझे यह करने के लिए 28 सेकंड से हराया।

> for (i in 1:10) { 
+ cat(paste("..", i, "..")) 
+ } 
.. 1 .... 2 .... 3 .... 4 .... 5 .... 6 .... 7 .... 8 .... 9 .... 10 .. 
8

शायद तुम plyr

l_ply(1:4,function(x) x+1,.progress= progress_text(char = '+'),.print=TRUE) 
    |         | 0%[1] 2 
    |++++++       | 25%[1] 3 
    |+++++++++++++++     | 50%[1] 4 
    |++++++++++++++++++++++   | 75%[1] 5 
    |++++++++++++++++++++++++++++++++ | 100%[1] 
4

yse तुम सच में इस तरह के रूप में एक प्रगति बार की जरूरत है, सांत्वना उत्पादन के लिए txtProgressBar उपयोग कर सकते हैं। या विंडो के तहत winProgressBar खिड़की के नीचे एक प्रगति पट्टी के लिए।

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