البحث في السلاسل النصية
جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 4 من 64.
grepl(pattern, x) تُرجع TRUE لكل عنصر من x يحتوي على pattern. أضف fixed = TRUE للبحث عن الأحرف المطابقة تمامًا. بدونها، يكون النمط تعبيرًا نمطيًا، حيث تحمل أحرف مثل . و? معاني خاصة.
files <- c("report.csv", "photo.png", "data.csv")
print(grepl(".csv", files, fixed = TRUE))
print(files[grepl(".csv", files, fixed = TRUE)])الناتج:
[1] TRUE FALSE TRUE
[1] "report.csv" "data.csv" تتحقق startsWith(x, prefix) وendsWith(x, suffix) فقط من بداية كل سلسلة نصية أو نهايتها. جميع عمليات البحث هذه حساسة لحالة الأحرف، لذا استخدم tolower() أولًا لتجاهل حالة الأحرف.
names <- c("Anna", "bob", "Andre")
print(startsWith(names, "An"))
print(startsWith(tolower(names), "b"))الناتج:
[1] TRUE FALSE TRUE
[1] FALSE TRUE FALSEالنتائج عبارة عن متجهات منطقية، لذا تحسب sum() التطابقات وتتحقق any() من وجود تطابق واحد على الأقل:
emails <- c("a@x.com", "bad-address", "c@y.org")
valid <- grepl("@", emails, fixed = TRUE)
print(sum(valid))
print(any(!valid))الناتج:
[1] 2
[1] TRUEتعرض grep(pattern, x) مواضع العناصر المطابقة، بينما تعرض grep(pattern, x, value = TRUE) العناصر نفسها:
files <- c("a.csv", "b.txt", "c.csv")
print(grep(".csv", files, fixed = TRUE))
print(grep(".csv", files, fixed = TRUE, value = TRUE))الناتج:
[1] 1 3
[1] "a.csv" "c.csv"التحدي
سهلأكمل count_domain(emails, domain). أعد عدد العناوين في emails التي تنتهي بـ @ متبوعةً بـ domain. تجاهل حالة الأحرف: يُحتسب CY@CODDY.TECH للنطاق coddy.tech.
يقرأ الكود المقدم العناوين كسطر مفصول بفواصل، ثم يقرأ النطاق، ويطبع العدد المُعاد.
جرّب بنفسك
count_domain <- function(emails, domain) {
# اكتب الكود الخاص بك هنا
0
}
# كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
input <- suppressWarnings(readLines(file("stdin")))
emails <- strsplit(input[1], ",")[[1]]
cat(count_domain(emails, input[2]), sep = "\n")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهمتدرّب بنفسك: مترجم R عبر الإنترنت