[解決済み] 文字列からすべての空白を削除するには?
質問
だから
" xx yy 11 22 33 "
は次のようになります。
"xxyy112233"
. どうすれば実現できるのでしょうか?
どのように解決するのですか?
一般的には、ベクトル化された解が欲しいので、より良いテスト例を紹介します。
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
ベースとなるRのアプローチ
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
DWinが指摘するように、この場合
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年12月現在、開発版では、ブランチの上に構築されている
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}"
は、空白とみなされる Unicode コードポイントの集合の代替構文で、次のものと同等です。
"[[: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
関連
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Rの再現性のある優れた例題の作り方
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】R関数でオプション引数を指定する "正しい "方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
二項演算子への非数値引数を報告するR言語エラー
-
8.2 カマグラ(No.31〜No.40)
-
[解決済み] R: 2つの文字列をスペースなしで貼り付ける[重複]。
-
R言語エラー:図の余白が大きすぎる 解決方法
-
[解決済み] R および RStudio のコンソールをクリアする関数
-
[解決済み] データフレームの行を複数の列でソート(並び替え)する。
-
[解決済み] ggplot2 Rプロットで軸の制限を設定するには?
-
[解決済み] 先頭と末尾の空白を削除するにはどうしたらよいですか?
-
[解決済み] ベクトル中のある要素のインデックスを求めるR関数はありますか?
-
[解決済み] 2つの単語の最初の文字を大文字にします。