R の grep() と grep() の比較: 違いは何ですか?
R でよく混同される 2 つの関数は、 grep()とgrep()です。どちらの関数でも、文字列内に特定のパターンが存在するかどうかを確認できますが、異なる結果が返されます。
- grep() は、文字列にパターンが存在する場合に TRUE を返します。
- grep() は、パターンを含む文字列インデックスのベクトルを返します。
次の例は、この違いを示しています。
#create a vector of data data <- c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center') grep ('Guard', data) [1] 1 2 grepl ('Guard', data) [1] TRUE TRUE FALSE FALSE FALSE
次の例は、これらの関数の一方を他方よりも使用する必要がある場合を示しています。
grep() を使用する場合
1. 特定の文字列を含む行をフィルタリングする
grep()の最も一般的な使用法の 1 つは、特定の文字列を含むデータ フレーム内の行をフィルター処理することです。
library(dplyr) #create data frame df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'), points = c(12, 15, 19, 22, 32), rebounds = c(5, 7, 7, 12, 11)) #filter rows that contain the string 'Guard' in the player column df %>% filter( grepl ('Guard', player)) player points rebounds 1 P Guard 12 5 2 S Guard 15 7
関連: dplyr を使用して特定の文字列を含む行をフィルタリングする方法
grep() を使用する場合
1. 特定の文字列を含む列を選択します
grep()を使用して、特定の文字列を含むデータ フレーム内の列を選択できます。
library(dplyr) #create data frame df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'), points = c(12, 15, 19, 22, 32), rebounds = c(5, 7, 7, 12, 11)) #select columns that contain the string 'p' in their name df %>% select( grep ('p', colnames(df))) player points 1 P Guard 12 2 S Guard 15 3S Forward 19 4P Forward 22 5 Center 32
2. 特定の文字列が含まれる行数を数える
grep()を使用すると、特定の文字列を含むデータ フレーム内の行数をカウントできます。
#create data frame df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'), points = c(12, 15, 19, 22, 32), rebounds = c(5, 7, 7, 12, 11)) #count how many rows contain the string 'Guard' in the player column length( grep ('Guard', df$player)) [1] 2
その他の R チュートリアルはここで見つけることができます。