2011-06-14 17 views
54

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

"1", "2", "3", "4", "5" 

एम आई पेस्ट समारोह से कुछ पैरामीटर रहित:

> one = c(1:5) 
> paste(as.character(one), collapse=", ") 
[1] "1, 2, 3, 4, 5" 
> paste(as.character(one), sep="' '", collapse=", ") 
[1] "1, 2, 3, 4, 5" 

हालांकि, मैं उत्पादन की तरह लग रहे करना चाहते हैं? सहायता !?

उत्तर

61

shQuote शायद ऐसा करने का सबसे अच्छा तरीका है। विशेष रूप से, यह आप उत्पादन हो जाता है आप चाहते हैं:

cat(paste(shQuote(one, type="cmd"), collapse=", ")) 

एकल उद्धरण ठीक हैं, तो आप उपयोग कर सकते हैं:

paste(shQuote(one), collapse=", ") 

type="cmd" वास्तव में भाग निकले प्रदान करता है उद्धरण, जो वास्तव में अधिकांश संदर्भों के लिए उपयोगी है, लेकिन यदि आप वास्तव में इसे अनचाहे उद्धरण के साथ कहीं भी प्रदर्शित करना चाहते हैं, तो cat यह प्रदान करता है।

7

मान लिया जाये कि आप चाहते हैं एक चरित्र स्ट्रिंग (के रूप में पात्रों में से एक वेक्टर के खिलाफ) में अपने उत्पादन आप की कोशिश कर सकते:

paste("'",as.character(one),"'",collapse=", ",sep="") 

है कि आप के बजाय संख्या दोहरे उद्धरण चिह्नों के आसपास एकल उद्धरण देता है, लेकिन यह मूल रूप से क्या आपको लगता है

और आप हमेशा दोहरे उद्धरण चिह्नों पाने के लिए बच सकते हैं:

rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="") 
cat(rs) 

कि प्रिंट आउट होना चाहिए कि आप दोहरे उद्धरण चिह्नों के साथ चाहते हैं।

26

आप कहते हैं कि आपको लगता है कि उत्पादन के साथ एक चरित्र वेक्टर चाहते हैं, लेकिन जो दूसरों को इस सवाल को खोजने के बजाय इन कार्यों में से एक की तलाश में जा सकता है:

सबसे पहले, एक तरह से आर के लिए इनपुट के लिए उत्पादन तैयार हो जाओ करने के लिए; कि dput होगा:

> dput(as.character(one)) 
c("1", "2", "3", "4", "5") 

दूसरा, उत्पादन एक csv फ़ाइल के लिए एक रास्ता है, जो write.csv या write.table होगा। ये फ़ंक्शंस file पैरामीटर लेते हैं, यहां फ़ाइल का सीधे आउटपुट करने के लिए यहां उपयोग नहीं किया गया है।

> write.table(matrix(as.character(one),nrow=1), sep=",", 
       row.names=FALSE, col.names=FALSE) 
"1","2","3","4","5" 

> write.csv(matrix(as.character(one),nrow=1),row.names=FALSE) 
"V1","V2","V3","V4","V5" 
"1","2","3","4","5" 
+0

धन्यवाद! यह सबसे सुरुचिपूर्ण समाधान है – ikashnitsky

3

shQuote के अलावा, कार्यों sQuote और dQuote क्रमशः सिंगल और डबल उद्धरण में पाठ रैप करने के लिए देखते हैं। आप सादे (यूनिडायरेक्शनल) ASCII उद्धरण प्राप्त करने के लिए options(useFancyQuotes=FALSE) भी सेट करना चाहेंगे।

0

बस नोआ जवाब देने के लिए पर जोड़ने के लिए आप paste समारोह उपयोग करना चाहते हैं:

paste(shQuote(one, type="sh"), collapse=", ") 

आप देना चाहिए:

[1] '1','2','3','4','5' 
संबंधित मुद्दे