2013-01-13 9 views
5

मैं एक समारोह है कि नीचे की तरह एक तर्क लिखने के लिए कोशिश कर रहा हूँ कार्य करने के लिए:अग्रणी शून्य के साथ एक नंबर गुजर

myfunction<-function(id){ 
print(paste(id, ".", "csv", sep="")) 
} 

जब आईडी मान इस 009 की तरह है, यह इसके 9.csv नहीं 009 के रूप में प्रिंट .csv।

मैं इस कोशिश की:

id<-as.character(id) 

इस काम नहीं कर रहा। कोई सुझाव?

उत्तर

9

उदाहरण के लिए उपयोग करें sprintf():

myfunction <- function(id) { 
    sprintf("%03d.csv", id) 
} 

जो देता है

R> cat(myfunction(9), "\n") 
009.csv 
R> cat(myfunction(199), "\n") 
199.csv 
R> 
4

आप पहले से ही स्वीकार किए जाते हैं हालांकि @ डिर्क का जवाब ...

समस्या यदि आप किसी संख्यात्मक रूप में अपने इनपुट से गुजर रहे हैं है। आर के लिए, 0099 का मूल्यांकन:

> 009 
[1] 9 

इसलिए जब आप myfunction(009) चलाने के लिए, यह वास्तव में myfunction(9) चलाता है। यह आश्चर्यजनक नहीं होना चाहिए कि आपको अपने आउटपुट के रूप में "9.csv" मिलता है। "009":

बजाय, आप एक चरित्र के रूप में अपने इनपुट पास करना चाहिए

> myfunction("009") 
[1] "009.csv" 
+0

इस इस उदाहरण में काम करता है, समस्या यह है कि आप हमेशा एक से पैरामीटर में टाइप करने में सक्षम हो नहीं होगा कमांड लाइन और "" जोड़ें, कभी-कभी फ़ंक्शन को किसी अन्य फ़ंक्शन से कॉल किया जाएगा जिसका आपके पास कोई नियंत्रण नहीं है और वह "00" जोड़ता नहीं है और आपको यह सुनिश्चित करना होगा कि यह आपके फ़ंक्शन में 9 नहीं बनता है। यही वह जवाब है जिसे मैं खोज रहा हूं (और मुझे यहां लाया) – chrisfs

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