2011-09-10 10 views
10

पर वेक्टर का कहना है कि मेरे पास एक ऐसा फ़ंक्शन है जो स्प्रिंटफ() जैसे परिवर्तनीय तर्क लेता है। मैं कुछ ऐसा करना चाहते हैं:क्या आप एक वेक्टर को एक वैरगा पास कर सकते हैं ?:

sprintf("%s %s", "a", "b") 

लेकिन मैं "एक" और "बी" एक वेक्टर ग में ("एक", "ख")।

sprintf("%s %s", c("a", "b")) 

जैसे पर्याप्त कॉल पर्याप्त तर्क के लिए त्रुटि उत्पन्न नहीं करेंगे। कई भाषाएं वेक्टर को एक चर-लंबाई तर्क में "फ़्लैट" करने का एक तरीका प्रदान करती हैं। लेकिन मुझे आर में ऐसा करने के लिए वाक्यविन्यास नहीं मिल रहा है। क्या कोई रास्ता है?

उत्तर

17

आप do.call उपयोग कर सकते हैं:

vec <- c("a","b") 
do.call(sprintf, c(list("%s %s"), vec)) 
# [1] "a b" 
संबंधित मुद्दे