दिलचस्प पोस्ट
सिस्टम। विन्डोज। थ्रेडिंग। डिस्पार्चर और विनफॉर्म? पायथन में सीएसवी एक अतिरिक्त कैरिज रिटर्न जोड़ना एप्लिकेशन निष्क्रिय समय जहां सत्रस्ट्रॉज और स्थानीयस्टॉरेज संग्रहित है? Android में स्क्रीन रोटेशन पर संवाद बर्खास्तगी को रोकें ऐक्टिवेटर के बजाय वस्तुओं का तेजी से निर्माण। रचना (प्रकार) जावास्क्रिप्ट डीबगर आईओएस 2.0 पर ईमेल पतों को मान्य करने के लिए सर्वोत्तम प्रथाएं क्या हैं लिनक्स घड़ी पर मिलीसेकंड का समय प्राप्त करने के लिए सी + + ठीक से काम नहीं करता मैं $ http के साथ फार्म डेटा urlencoded कैसे पोस्ट करूं? कैसे CMake में "-l" (ell) संकलक ध्वज को जोड़ने के लिए में मैं isset () और रिक्त (रिक्त) का उपयोग कैसे करूँगा? एक जावास्क्रिप्ट फ़ंक्शन को कॉल करने के लिए एक HTML बटन का उपयोग करना 7 जीतें, 64 बिट, डीएलएल समस्याओं I = 0 के लिए, क्यों (i + = i ++) 0 के बराबर है?

स्ट्रिंग के पहले अक्षर को प्राप्त करना और निकालना

मैं प्रत्येक चरित्र के लिए अलग-अलग मान बताकर वर्णों के तारों का उपयोग करके कुछ 2-आयामी चलता करना चाहता हूं। मैं 'स्ट्रिंग के पहले अक्षर को' पॉप 'करने की योजना बना रहा था, इसका उपयोग, और बाकी स्ट्रिंग के लिए दोहराएं

मैं इस तरह से कुछ कैसे हासिल कर सकता हूं?

x <- 'hello stackoverflow' 

मैं ऐसा कुछ करने में सक्षम होना चाहता हूं:

 a <- x.pop[1] print(a) 'h' print(x) 'ello stackoverflow' 

वेब के समाधान से एकत्रित समाधान "स्ट्रिंग के पहले अक्षर को प्राप्त करना और निकालना"

देखें ?substring

 x <- 'hello stackoverflow' substring(x, 1, 1) ## [1] "h" substring(x, 2) ## [1] "ello stackoverflow" 

एक pop विधि होने का विचार जो दोनों एक मूल्य देता है और x में संग्रहीत डेटा को अपडेट करने का एक साइड इफेक्ट है, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग से एक अवधारणा बहुत ज्यादा है। इसलिए वर्ण वैक्टर पर संचालित करने के लिए pop फ़ंक्शन को परिभाषित करने के बजाय, हम pop पद्धति के साथ संदर्भ श्रेणी बना सकते हैं।

 PopStringFactory <- setRefClass( "PopString", fields = list( x = "character" ), methods = list( initialize = function(x) { x <<- x }, pop = function(n = 1) { if(nchar(x) == 0) { warning("Nothing to pop.") return("") } first <- substring(x, 1, n) x <<- substring(x, n + 1) first } ) ) x <- PopStringFactory$new("hello stackoverflow") x ## Reference class object of class "PopString" ## Field "x": ## [1] "hello stackoverflow" replicate(nchar(x$x), x$pop()) ## [1] "h" "e" "l" "l" "o" " " "s" "t" "a" "c" "k" "o" "v" "e" "r" "f" "l" "o" "w" 

stringi पैकेज से इस फ़ंक्शन का उपयोग करें

 > x <- 'hello stackoverflow' > stri_sub(x,2) [1] "ello stackoverflow" 

substring निश्चित रूप से सर्वश्रेष्ठ है, लेकिन यहां एक strsplit विकल्प है, क्योंकि मैंने अभी तक एक नहीं देखा है।

 > x <- 'hello stackoverflow' > strsplit(x, '')[[1]][1] ## [1] "h" 

या equivalently

 > unlist(strsplit(x, ''))[1] ## [1] "h" 

और आप शेष स्ट्रिंग को एक साथ वापस paste कर सकते हैं।

 > paste0(strsplit(x, '')[[1]][-1], collapse = '') ## [1] "ello stackoverflow" 

स्ट्रिंगर पैकेज से str_sub भी है

 x <- 'hello stackoverflow' str_sub(x, 2) # or str_sub(x, 2, str_length(x)) [1] "ello stackoverflow" 

पहला अक्षर निकालना:

 x <- 'hello stackoverflow' substring(x, 2, nchar(x)) 

आइडिया 2 से शुरू होने वाले सभी पात्रों को एक्स में वर्णों की संख्या के लिए चुनना है। यह महत्वपूर्ण है जब आपके शब्द या वाक्यांश में अक्षरों की असमान संख्या हो।

पहले अक्षर का चयन पिछले उत्तर के रूप में तुच्छ है:

 substring(x,1,1) 

एक अन्य विकल्प नियमित अभिव्यक्ति फ़ंक्शंस regmatches और regexec साथ उप-अभिव्यक्तियों को कैप्चर करने का उपयोग regexec

 # the original example x <- 'hello stackoverflow' # grab the substrings myStrings <- regmatches(x, regexec('(^.)(.*)', x)) 

यह पूरी स्ट्रिंग देता है, पहला चरित्र और "पॉपेड" परिणाम 1 की सूची में परिणाम देता है।

 myStrings [[1]] [1] "hello stackoverflow" "h" "ello stackoverflow" 

जो list(c(x, substr(x, 1, 1), substr(x, 2, nchar(x)))) बराबर है list(c(x, substr(x, 1, 1), substr(x, 2, nchar(x)))) । यही है, इसमें वांछित तत्वों के सुपर सेट और साथ ही पूर्ण स्ट्रिंग भी शामिल है।


sapply जोड़ना इस विधि को लंबाई के एक चरित्र वेक्टर के लिए काम करने की अनुमति देगा> 1

 # a slightly more interesting example xx <- c('hello stackoverflow', 'right back', 'at yah') # grab the substrings myStrings <- regmatches(x, regexec('(^.)(.*)', xx)) 

यह मिलान करने वाली पूरी स्ट्रिंग के साथ एक सूची देता है, जैसा कि पहले तत्व और मिलान तत्वों () द्वारा निम्न तत्वों के रूप में कब्जा कर लिया गया है। इसलिए नियमित अभिव्यक्ति में '(^.)(.*)' , (^.) पहले अक्षर से मेल खाता है और (.*) शेष वर्णों से मेल खाता है।

 myStrings [[1]] [1] "hello stackoverflow" "h" "ello stackoverflow" [[2]] [1] "right back" "r" "ight back" [[3]] [1] "at yah" "a" "t yah" 

अब, हम भरोसेमंद sapply उपयोग कर सकते हैं + [ इच्छित वांछित सबस्ट्रिंग को निकालने के लिए विधि

 myFirstStrings <- sapply(myStrings, "[", 2) myFirstStrings [1] "h" "r" "a" mySecondStrings <- sapply(myStrings, "[", 3) mySecondStrings [1] "ello stackoverflow" "ight back" "t yah"