Vergelijking van grep() en grepl() in r: wat is het verschil?
Twee functies die mensen vaak verwarren in R zijn grep() en grepl() . Met beide functies kunt u zien of een bepaald patroon in een string voorkomt, maar ze geven verschillende resultaten:
- grepl() retourneert TRUE als er een patroon in een string bestaat.
- grep() retourneert een vector van tekenreeksindexen die het patroon bevatten.
Het volgende voorbeeld illustreert dit verschil:
#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
De volgende voorbeelden laten zien wanneer u een van deze functies mogelijk boven de andere wilt gebruiken.
Wanneer gebruik je grepl()
1. Filter rijen die een bepaalde string bevatten
Een van de meest voorkomende toepassingen van grepl() is het filteren van rijen in een dataframe dat een bepaalde string bevat:
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
Gerelateerd: Rijen filteren die een bepaalde tekenreeks bevatten met behulp van dplyr
Wanneer gebruik je grep()
1. Selecteer kolommen die een bepaalde tekenreeks bevatten
Je kunt grep() gebruiken om kolommen te selecteren in een dataframe dat een bepaalde string bevat:
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. Tel het aantal regels dat een bepaalde string bevat
Je kunt grep() gebruiken om het aantal regels in een dataframe te tellen dat een bepaalde string bevat:
#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
Meer R-tutorials vindt u hier .