مقارنة بين grep() وgrepl() في r: ما الفرق؟
هناك وظيفتان غالبًا ما يخلطهما الناس في لغة R هما grep() و grepl() . تسمح لك كلتا الدالتين بمعرفة ما إذا كان هناك نمط معين موجود في سلسلة ما، لكنهما ترجعان نتائج مختلفة:
- تُرجع الدالة grepl() القيمة 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
توضح الأمثلة التالية متى قد ترغب في استخدام إحدى هذه الوظائف بدلاً من الأخرى.
متى تستخدم grepl()
1. تصفية الصفوف التي تحتوي على سلسلة معينة
أحد الاستخدامات الأكثر شيوعًا لـ grepl() هو تصفية الصفوف في إطار بيانات يحتوي على سلسلة معينة:
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 هنا .