回答:
正規表現と関数でgsub()
:
group <- c("12357e", "12575e", "197e18", "e18947")
group
[1] "12357e" "12575e" "197e18" "e18947"
gsub("e", "", group)
[1] "12357" "12575" "19718" "18947"
何gsub
ここで行うことは、各発生を置き換えることで"e"
、空の文字列で""
。
詳細については、?regexp
またはgsub
を参照してください。
fixed=TRUE
Rが正規表現を使用しないようにします。これにより、より柔軟なパターンマッチングが可能になりますが、計算に時間がかかります。必要なのが単一の定数文字列「e」を削除することだけであれば、それらは必要ありません。
sub("e", "", group)
と同じ結果を保持?
e
各要素で最初に見つかったものを置き換えるだけです
正規表現はあなたの友達です:
R> ## also adds missing ')' and sets column name
R> group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947")) )
R> group
group
1 12357e
2 12575e
3 197e18
4 e18947
次にgsub()
、最も単純な置換パターンで使用します。空の文字列:
R> group$groupNoE <- gsub("e", "", group$group)
R> group
group groupNoE
1 12357e 12357
2 12575e 12575
3 197e18 19718
4 e18947 18947
R>
require(stringr);group$groupNoE <- str_replace(group$group, "e", "")
str_replace
wraps sub
なので、パターンの最初の出現のみを置き換えます。str_replace_all
と同じ動作が必要な場合は、を使用する必要がありますgsub
。
文字列を置き換える2つの方法の要約:
group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947"))
1)使用 gsub
group$group.no.e <- gsub("e", "", group$group)
2)stringr
パッケージを使用する
group$group.no.e <- str_replace_all(group$group, "e", "")
どちらも欲望の出力を生成します:
group group.no.e
1 12357e 12357
2 12575e 12575
3 197e18 19718
4 e18947 18947
文字列の一部の文字を置き換える場合は、文字列のベクトルからデータフレームを作成する必要はありません。正規表現は、@ Andrieと@Dirk Eddelbuettelによって既に言及されているため、適切な選択です。
ドットなどの特殊文字を置き換える場合は、以下の例に示すように、完全な正規表現構文を使用する必要があります。
ctr_names <- c("Czech.Republic","New.Zealand","Great.Britain")
gsub("[.]", " ", ctr_names)
これは生成されます
[1] "Czech Republic" "New Zealand" "Great Britain"
gsub("\\.", " ", ctr_names)
fixed = TRUE
これを速くするでしょう。