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.