जवाबों:
सामान्य तौर पर, हम ऐसा समाधान चाहते हैं जो सदिश हो, इसलिए यहां एक बेहतर परीक्षा उदाहरण है:
whitespace <- " \t\n\r\v\f" # space, tab, newline,
# carriage return, vertical tab, form feed
x <- c(
" x y ", # spaces before, after and in between
" \u2190 \u2192 ", # contains unicode chars
paste0( # varied whitespace
whitespace,
"x",
whitespace,
"y",
whitespace,
collapse = ""
),
NA # missing
)
## [1] " x y "
## [2] " ← → "
## [3] " \t\n\r\v\fx \t\n\r\v\fy \t\n\r\v\f"
## [4] NA
gsubgsubएक स्ट्रिंग ( fixed = TRUE) या नियमित अभिव्यक्ति ( fixed = FALSE, डिफ़ॉल्ट) के सभी उदाहरणों को दूसरे स्ट्रिंग के साथ बदल देता है । सभी रिक्त स्थान निकालने के लिए, उपयोग करें:
gsub(" ", "", x, fixed = TRUE)
## [1] "xy" "←→"
## [3] "\t\n\r\v\fx\t\n\r\v\fy\t\n\r\v\f" NA
जैसा कि डीडिन ने नोट किया, इस मामले में fixed = TRUE में यह आवश्यक नहीं है, लेकिन थोड़ा बेहतर प्रदर्शन प्रदान करता है क्योंकि एक निश्चित स्ट्रिंग का मिलान एक नियमित अभिव्यक्ति के मिलान से तेज होता है।
यदि आप सभी प्रकार के व्हाट्सएप को हटाना चाहते हैं, तो उपयोग करें:
gsub("[[:space:]]", "", x) # note the double square brackets
## [1] "xy" "←→" "xy" NA
gsub("\\s", "", x) # same; note the double backslash
library(regex)
gsub(space(), "", x) # same
"[:space:]"एक R- विशिष्ट नियमित अभिव्यक्ति समूह है जो सभी अंतरिक्ष वर्णों से मेल खाता है। \sएक भाषा-स्वतंत्र नियमित-अभिव्यक्ति है जो समान कार्य करती है।
stringrदृष्टिकोण: str_replace_allऔरstr_trimstringrआधार R फ़ंक्शंस के आसपास अधिक मानव-पठनीय रैपर प्रदान करता है (हालांकि दिसंबर 2014 के अनुसार, विकास संस्करण में ऊपर की ओर एक शाखा बनी है stringi, जिसका उल्लेख नीचे किया गया है)। [ str_replace_all][3], का उपयोग करते हुए उपरोक्त आदेशों के समतुल्य हैं:
library(stringr)
str_replace_all(x, fixed(" "), "")
str_replace_all(x, space(), "")
stringrएक str_trimफ़ंक्शन भी है जो केवल प्रमुख और अनुगामी व्हाट्सएप को हटाता है।
str_trim(x)
## [1] "x y" "← →" "x \t\n\r\v\fy" NA
str_trim(x, "left")
## [1] "x y " "← → "
## [3] "x \t\n\r\v\fy \t\n\r\v\f" NA
str_trim(x, "right")
## [1] " x y" " ← →"
## [3] " \t\n\r\v\fx \t\n\r\v\fy" NA
stringiदृष्टिकोण:stri_replace_all_charclassऔरstri_trimstringiप्लेटफ़ॉर्म-स्वतंत्र ICU लाइब्रेरी पर बनाया गया है , और इसमें स्ट्रिंग हेरफेर कार्यों का एक व्यापक सेट है। समकक्ष ऊपर के होते हैं:
library(stringi)
stri_replace_all_fixed(x, " ", "")
stri_replace_all_charclass(x, "\\p{WHITE_SPACE}", "")
यहाँ "\\p{WHITE_SPACE}"एक यूनिकोड कोड बिंदु के सेट के लिए एक वैकल्पिक वाक्यविन्यास है, जिसे व्हॉट्सएप माना जाता है "[[:space:]]", "\\s"और इसके बराबर है space()। अधिक जटिल नियमित अभिव्यक्ति प्रतिस्थापन के लिए, वहाँ भी है stri_replace_all_regex।
stringiट्रिम फ़ंक्शन भी हैं ।
stri_trim(x)
stri_trim_both(x) # same
stri_trim(x, "left")
stri_trim_left(x) # same
stri_trim(x, "right")
stri_trim_right(x) # same
"[[:space:]]"और कोई फर्क है "\\s"?
मैंने अभी "stringr" पैकेज के बारे में सीखा है कि str_trim (,, साइड = "दोनों") के साथ एक स्ट्रिंग की शुरुआत और अंत से सफेद स्थान को हटाने के लिए, लेकिन इसमें एक प्रतिस्थापन कार्य भी है ताकि:
a <- " xx yy 11 22 33 "
str_replace_all(string=a, pattern=" ", repl="")
[1] "xxyy112233"
कृपया ध्यान दें कि ऊपर लिखी आत्माएँ केवल स्थान को हटाती हैं। यदि आप भी पैकेज stri_replace_all_charclassसे टैब या नई लाइन का उपयोग करना चाहते हैं stringi।
library(stringi)
stri_replace_all_charclass(" ala \t ma \n kota ", "\\p{WHITE_SPACE}", "")
## [1] "alamakota"
stringiपैकेज अब CRAN पर है, आनंद लें! :)
stringiकुछ महीनों के लिए उपयोग करने के बाद और देखा / सीखा कि यह कितना शक्तिशाली और कुशल है, यह स्ट्रिंग ऑपरेशन के लिए मेरा गो-टू-पैकेज बन गया है। आप लोगों ने इसके साथ बहुत बढ़िया काम किया।
[[:blank:]]किसी भी प्रकार के क्षैतिज व्हाइट_स्पेस वर्णों का मिलान करने के लिए उपयोग करें ।
gsub("[[:blank:]]", "", " xx yy 11 22 33 ")
# [1] "xxyy112233"
Tidyverse के str_squish()पैकेज से फ़ंक्शन stringrजादू करता है!
library(dplyr)
library(stringr)
df <- data.frame(a = c(" aZe aze s", "wxc s aze "),
b = c(" 12 12 ", "34e e4 "),
stringsAsFactors = FALSE)
df <- df %>%
rowwise() %>%
mutate_all(funs(str_squish(.))) %>%
ungroup()
df
# A tibble: 2 x 2
a b
<chr> <chr>
1 aZe aze s 12 12
2 wxc s aze 34e e4
str_squishसभी रिक्त स्थान नहीं निकालता है। यह सिर्फ एक के लिए कई स्थानों को ट्रिम और स्थानापन्न करता है।
इस तरह से आप अपने डेटा फ़्रेम में सभी वर्ण चर से सभी रिक्त स्थान निकाल सकते हैं। यदि आप केवल कुछ चर का चयन करना चाहते हैं, तो उपयोग करें mutateया mutate_at।
library(dplyr)
library(stringr)
remove_all_ws<- function(string){
return(gsub(" ", "", str_squish(string)))
}
df<-df %>% mutate_if(is.character, remove_all_ws)
स्ट्रिंग लाइब्रेरी से आप यह कोशिश कर सकते हैं:
रिक्त को भरें
पुस्तकालय (stringr)
2. 1.
| |
V V
str_replace_all(str_trim(" xx yy 11 22 33 "), " ", "")