2014-05-18 13 views
6

मैं आर में कार्यों को लिखने की कोशिश कर रहा हूं जहां लक्ष्य एकाधिक .csv फ़ाइलों को पढ़ना है। उन्हें 001.csv, 002.csv, ... 332.csv के रूप में नामित किया गया है।sprintf ("% 03d", 7) कार्यक्षमता के लिए स्पष्टीकरण?

paste के साथ मैं नाम 1.csv, 2.csv और इतने पर निर्माण करने में कामयाब रहा, लेकिन मुझे अग्रणी शून्य जोड़ने में कठिनाई हो रही है। एक संकेत है कि sprintf("%03d", 7) जैसे निर्माण की आवश्यकता है, लेकिन मुझे नहीं पता कि यह क्यों और कैसे काम करता है।

तो क्या कोई यह बता सकता है कि निम्नलिखित कथन वास्तव में क्या कर सकता है?

+3

क्या आपने '? Sprintf' सहायता पृष्ठ पढ़ा था? क्या कोई विशिष्ट हिस्सा था जो आपके लिए अस्पष्ट था? – MrFlick

उत्तर

20

sprintf मूल रूप से सी से आता है और सभी प्रारूपण नियम भी इससे लिया जाता है। विषय को जानने के लिए संदर्भ में ?sprintf या this या this संदर्भ देखें। यहां मैं संक्षेप में बताऊंगा कि इसके पीछे जादू क्या है।

"%03d" एक स्वरूपण स्ट्रिंग है, जो निर्दिष्ट करता है कि 7 मुद्रित किया जाएगा।

  • d, decimal integer (नहीं double!) के लिए खड़ा है तो यह कहते हैं कोई चल बिन्दु या ऐसा कुछ भी, बस एक नियमित पूर्णांक नहीं होगा।
  • 3 दिखाता है कि मुद्रित संख्या में कितने अंक होंगे। अधिक सटीक, संख्या कम से कम 3 अंक: 7__7 (अंडरस्कोर के बजाय रिक्त स्थान के साथ) होगी, लेकिन 10001000 रहेगा, क्योंकि इस नंबर को केवल 3 अंकों के साथ लिखने का कोई तरीका नहीं है।
  • 03 से पहले दिखाता है कि अग्रणी रिक्त स्थान शून्य से प्रतिस्थापित किया जाना चाहिए। अन्य संभावित संशोधक देखने के लिए sprintf("%+3d", 7), sprintf("%-3d", 7) के साथ प्रयोग करने का प्रयास करें (उन्हें ध्वज कहा जाता है)।
+1

इसके लिए धन्यवाद; उत्कृष्ट और संक्षिप्त। बहुत उपयोगी! – Aron

+0

@Aron धन्यवाद - हमेशा एक खुशी! – tonytonov

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