R'de grep() ve grepl() karşılaştırması: fark nedir?


İnsanların R’de sıklıkla karıştırdığı iki işlev grep() ve grepl()’ dir. Her iki işlev de bir dizede belirli bir modelin var olup olmadığını görmenize olanak tanır, ancak farklı sonuçlar döndürürler:

  • grepl(), bir dizede bir model mevcut olduğunda TRUE değerini döndürür.
  • grep() modeli içeren dize indekslerinin bir vektörünü döndürür.

Aşağıdaki örnek bu farkı göstermektedir:

 #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

Aşağıdaki örnekler, bu işlevlerden birini diğerine göre ne zaman kullanmak isteyebileceğinizi gösterir.

Grepl() ne zaman kullanılır?

1. Belirli bir dizeyi içeren satırları filtreleyin

Grepl() işlevinin en yaygın kullanımlarından biri, belirli bir dize içeren bir veri çerçevesindeki satırları filtrelemektir:

 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

İlgili: Dplyr kullanılarak belirli bir dize içeren satırlar nasıl filtrelenir

grep() ne zaman kullanılır?

1. Belirli bir dizeyi içeren sütunları seçin

Belirli bir dize içeren bir veri çerçevesindeki sütunları seçmek için grep() işlevini kullanabilirsiniz:

 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. Belirli bir dizeyi içeren satırların sayısını sayın

Belirli bir dize içeren bir veri çerçevesindeki satır sayısını saymak için grep() işlevini kullanabilirsiniz:

 #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

Daha fazla R eğitimini burada bulabilirsiniz.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir