lapply و sapply
جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 32 من 64.
lapply(x, f) تستدعي f على كل عنصر من x وتُرجع النتائج في قائمة، عنصر واحد لكل مُدخل:
squares <- lapply(1:3, function(i) i^2)
print(length(squares))
print(squares[[3]])الناتج:
[1] 3
[1] 9sapply() يفعل الشيء نفسه ويبسّط النتيجة: عندما تُرجع كل استدعاءات الدالة قيمةً واحدة، تحصل على متجه عادي بدلًا من قائمة:
print(sapply(1:3, function(i) i^2))
print(sapply(c(4, 9, 16), sqrt))الناتج:
[1] 1 4 9
[1] 2 3 4عند استخدام متجه من المحارف، تُسمّي sapply() النتائج بأسماء المدخلات. أضف USE.NAMES = FALSE للحصول على متجه عادي:
words <- c("tea", "coffee")
print(sapply(words, nchar))
print(sapply(words, nchar, USE.NAMES = FALSE))المخرجات:
tea coffee
3 6
[1] 3 6تستبدل هذه الدوال الحلقة التي تبني نتيجةً عنصرًا واحدًا في كل مرة. يحسب كلا الإصدارين أدناه عدد حروف العلة في كل كلمة:
words <- c("banana", "sky", "idea")
vowels <- function(w) sum(strsplit(w, "")[[1]] %in% c("a", "e", "i", "o", "u"))
counts <- c()
for (w in words) counts <- c(counts, vowels(w))
print(counts)
print(sapply(words, vowels, USE.NAMES = FALSE))الناتج:
[1] 3 0 3
[1] 3 0 3التحدي
سهلأكمل vowel_counts(words). أرجِع سطرًا واحدًا لكل كلمة، مثل banana: 3، يتضمن عدد حروف العلة (a، e، i، o، u) في الكلمة. استخدم sapply() لعدّ حروف العلة في جميع الكلمات.
يقرأ الكود المُقدَّم الكلمات كسطر مفصولة بفواصل من كلمات صغيرة الأحرف، ويطبع كل سطر مُعاد.
جرّب بنفسك
vowel_counts <- function(words) {
# اكتب الكود الخاص بك هنا
character(0)
}
# كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
input <- suppressWarnings(readLines(file("stdin")))
cat(vowel_counts(strsplit(input[1], ",")[[1]]), sep = "\n")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهمتدرّب بنفسك: مترجم R عبر الإنترنت