एक अल्पविराम से अलग वेक्टर बनाना


89

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

> 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"

हालाँकि, मैं चाहता हूँ कि आउटपुट जैसा दिखे:

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

क्या मुझे पेस्ट फंक्शन से कुछ पैरामीटर याद आ रहा है? मदद!?

जवाबों:


91

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

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

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

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

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


2
paste(shQuote(one), collapse=", ")[1] "\"1\", \"2\", \"3\", \"4\", \"5\""नहीं, एकल उद्धरण संलग्न संस्करण नहीं देता है ।
vasili111

44

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

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

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

दूसरा, एक सीएसवी फ़ाइल को आउटपुट करने का एक तरीका, जो होगा 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"

14

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

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

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

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

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

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


4

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


3

कुछ ऐसा ही स्ट्रगल के साथ

toString(paste0("'",1:10,"'") )

2

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

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

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

[1] '1','2','3','4','5'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.