Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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] 9

sapply() يفعل الشيء نفسه ويبسّط النتيجة: عندما تُرجع كل استدعاءات الدالة قيمةً واحدة، تحصل على متجه عادي بدلًا من قائمة:

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
challenge icon

التحدي

سهل

أكمل 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")
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم R عبر الإنترنت