जवाबों:
सामान्य तौर पर, हम ऐसा समाधान चाहते हैं जो सदिश हो, इसलिए यहां एक बेहतर परीक्षा उदाहरण है:
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
gsub
gsub
एक स्ट्रिंग ( 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_trim
stringr
आधार 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_trim
stringi
प्लेटफ़ॉर्म-स्वतंत्र 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 "), " ", "")