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

التكرار عبر الأسماء

جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 10 من 64.

تمر حلقة for على names(x) بكل مفتاح، ويعطي x[[key]] القيمة الخاصة بذلك المفتاح:

scores <- c(ada = 91, bo = 78, cy = 85)
for (name in names(scores)) {
  cat(name, "scored", scores[[name]], "\n")
}

الناتج:

ada scored 91 
bo scored 78 
cy scored 85 

تحافظ العناصر على الترتيب الذي أُضيفت به. نفّذ حلقة على sort(names(x)) للحصول على ترتيب أبجدي:

scores <- c(cy = 85, ada = 91, bo = 78)
for (name in sort(names(scores))) {
  cat(name, scores[[name]], "\n")
}

المخرجات:

ada 91 
bo 78 
cy 85 

يؤدي التكرار على المُدخل وتحديث جدول بحث إلى حساب عدد مرات ظهور كل قيمة. في المرة الأولى التي تظهر فيها كلمة، تحصل على القيمة 1، وبعد ذلك تزداد بمقدار 1:

words <- c("red", "blue", "red", "green", "red")
counts <- c()
for (w in words) {
  if (w %in% names(counts)) {
    counts[w] <- counts[w] + 1
  } else {
    counts[w] <- 1
  }
}
print(counts[["red"]])
print(names(counts))

الناتج:

[1] 3
[1] "red"   "blue"  "green"

لبناء أسطر الإخراج، اجمعها في متجه داخل الحلقة وأعدها أو اطبعها في النهاية:

scores <- c(ada = 91, bo = 78)
lines <- c()
for (name in names(scores)) {
  lines <- c(lines, paste0(name, ": ", scores[[name]]))
}
cat(lines, sep = "\n")

الإخراج:

ada: 91
bo: 78
challenge icon

التحدي

سهل

أكمل word_counts(words). أعد سطرًا واحدًا لكل كلمة مميّزة، بترتيب أبجدي، بالتنسيق word: count.

يقرأ الكود المرفق الكلمات كسطر واحد مفصولة بمسافات ويطبع كل سطر مُعاد.

جرّب بنفسك

word_counts <- function(words) {
  # اكتب الكود الخاص بك هنا
  character(0)
}

# كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
input <- suppressWarnings(readLines(file("stdin")))
cat(word_counts(strsplit(input[1], " ")[[1]]), sep = "\n")
quiz iconاختبر نفسك

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

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

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