R で gsub() を使用して複数のテンプレートを置き換える方法


R のgsub()関数を使用すると、R の文字列内に出現する特定のパターンをすべて置き換えることができます。

複数のモデルを一度に置き換えるには、ネストされたgsub()ステートメントを使用できます。

 df$col1 <- gsub(' old1 ', ' new1 ',
           gsub(' old2 ', ' new2 ',
           gsub(' old3 ', ' new3 ', df$col1)))

ただし、はるかに高速な方法は、 stringiパッケージのstri_replace_all_regex()関数であり、次の構文を使用します。

 library (stringi)

df$col1 <- stri_replace_all_regex(df$col1,
                                  pattern=c(' old1 ', ' old2 ', ' old3 '),
                                  replacement=c(' new1 ', ' new2 ', ' new3 '),
                                  vectorize= FALSE )

次の例は、各メソッドを実際に使用する方法を示しています。

方法 1: 複数のテンプレートをネストされた gsub() に置き換える

R に次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (name=c('A', 'B', 'B', 'C', 'D', 'D'),
                 dots=c(24, 26, 28, 14, 19, 12))

#view data frame
df

  name points
1 to 24
2 B 26
3 B 28
4 C 14
5 D 19
6 D 12

ネストされたgsub()ステートメントを使用して、 name列の複数のパターンを置き換えることができます。

 #replace multiple patterns in name column
df$name <- gsub(' A ', ' Andy ',
           gsub(' B ', ' Bob ',
           gsub(' C ', ' Chad ', df$name)))

#view updated data frame
df

  name points
1Andy 24
2 Bob 26
3 Bob 28
4 Chad 14
5 D 19
6 D 12

名前列の A、B、および C がすべて新しい値に置き換えられていることに注意してください。

方法 2: 複数のモデルを stringi に置き換える

複数のパターンを置換するより迅速な方法は、 stringiパッケージのstri_replace_all_regex()関数を使用することです。

次のコードは、この関数の使用方法を示しています。

 library (stringi)

#replace multiple patterns in name column
df$name <- stri_replace_all_regex(df$name,
                                  pattern=c(' A ', ' B ', ' C '),
                                  replacement=c(' Andy ', ' Bob ', ' Chad '),
                                  vectorize= FALSE )

#view updated data frame
df

  name points
1Andy 24
2 Bob 26
3 Bob 28
4 Chad 14
5 D 19
6 D 12

結果のデータ フレームは前の例のデータ フレームと一致することに注意してください。

データ フレームがある程度大きい場合でも、この関数がgsub()関数よりもはるかに高速であることがわかります。

追加リソース

次のチュートリアルでは、R で他の一般的な操作を実行する方法について説明します。

R で replace() 関数を使用する方法
R データフレームの値を条件付きで置き換える方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です