উত্তর:
সাধারণভাবে, আমরা এমন সমাধান চাই যা ভেক্টরাইজড, তাই এখানে আরও ভাল পরীক্ষার উদাহরণ দেওয়া হল:
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:]"
সমস্ত স্থানের অক্ষরের সাথে মিলে যাওয়া একটি আর-নির্দিষ্ট নিয়মিত এক্সপ্রেশন গ্রুপ। \s
ভাষা-স্বাধীন নিয়মিত-প্রকাশ যা একই কাজ করে does
stringr
দৃষ্টীকোণ: str_replace_all
এবংstr_trim
stringr
বেস আর ফাংশনগুলির আশেপাশে আরও বেশি মানব-পঠনযোগ্য মোড়ক সরবরাহ করে (যদিও ডিসেম্বর ২০১৪ হিসাবে, বিকাশের সংস্করণটির উপরে একটি শাখা রয়েছে যা 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
প্ল্যাটফর্ম-স্বতন্ত্র আইসিইউ লাইব্রেরির উপর নির্মিত এবং স্ট্রিং ম্যানিপুলেশন ফাংশনগুলির একটি বিস্তৃত সেট রয়েছে। সমতুল উপরোক্ত আছেন:
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"
?
আমি 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"
পরিশ্রমের 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 "), " ", "")