एक स्ट्रिंग को विभाजित करने के लिए आर का उपयोग कैसे करें ताकि निम्नलिखित वांछित परिणाम प्राप्त किया जा सके?

"A++" => "A" "" ""
"A+B+" => "A" "B" ""
"A+B+C" => "A" "B" "C"
"A++C" => "A" "" "C"
"++C" => "" "" "C"

मैंने strsplit() की कोशिश की, strsplit("A++","\\+")[[1]] का परिणाम "A" "" है, एक "" गायब है।

1
WCMC 23 जुलाई 2019, 01:41

2 जवाब

सबसे बढ़िया उत्तर

आधार पुस्तकालय से strsplit फ़ंक्शन कुछ हद तक सीमित है। यह खाली तारों को पीछे छोड़ते हुए गिरता है। stringr या stringi लाइब्रेरी आज़माएं। उदाहरण के लिए:

library(stringr)
str_split("A++", "\\+")

इसमें आपकी आवश्यक वापसी है:

[[1]]
[1] "A" ""  "" 

str_split इनपुट स्ट्रिंग और मैच पैटर्न दोनों पर वेक्टरकृत है।

1
tim 23 जुलाई 2019, 01:54

यदि आप हमेशा बड़े अक्षर रखना चाहते हैं तो आप निम्न को आजमा सकते हैं।

x<-unlist((strsplit("A++",""[[1]])),use.names = F)

for(j in 1:length(x)){
  if(x[j] %in% LETTERS){x[j]<-x[j]}
  else{x[j]<-""}
}

आपको पहले strsplit का उपयोग करना होगा और असूची का उपयोग करके किसी सूची से वेक्टर में कनवर्ट करना होगा। फिर, बस कुछ भी रखें जो कि एक बड़ा अक्षर है और अन्य सभी वर्णों को "" से बदलें (R में एक संग्रहीत वेक्टर "LETTERS" या "अक्षर" है यदि आपको लोअरकेस की भी आवश्यकता है)।

0
Tanner33 23 जुलाई 2019, 02:17