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

البحث في المتجهات المُسمّاة

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

يخزّن المتجه المُسمّى القيم تحت أسماء، مما يجعله جدول بحث: الاسم هو المفتاح والعنصر هو قيمته. ضع الاسم داخل [[ ]] للحصول على القيمة وحدها.

prices <- c(tea = 4, cake = 7)
print(prices[["cake"]])
print(names(prices))

المخرجات:

[1] 7
[1] "tea"  "cake"

تُرجع الأقواس المفردة العنصر مع اسمه. أما [[ ]] فتُرجع القيمة فقط:

prices <- c(tea = 4, cake = 7)
print(prices["cake"])
print(prices[["cake"]] * 2)

الناتج:

cake 
   7 
[1] 14

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

prices <- c(tea = 4, cake = 7)
item <- "tea"
print(prices[[item]])

الناتج:

[1] 4

يبحث متجه من الأسماء عن عدة مفاتيح في آنٍ واحد، بما في ذلك المفاتيح المكررة، لذلك تحسب sum() إجمالي الطلب في خطوة واحدة:

prices <- c(tea = 4, cake = 7)
order <- c("tea", "cake", "tea")
print(sum(prices[order]))

المخرجات:

[1] 15

يتصرف الاسم المفقود بشكل مختلف في الصيغتين: تُرجع prices["milk"] القيمة NA، بينما تتوقف prices[["milk"]] مع الخطأ subscript out of bounds.

challenge icon

التحدي

سهل

أكمل line_total(item, qty). تحدد الدالة القائمة أدناه. أعد سعر item مضروبًا في qty، مع تنسيقه بمنزلتين عشريتين: يعطي tea و3 القيمة 7.50.

menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)

كل عنصر في الإدخال موجود في القائمة. يقرأ الكود المُ supplied العنصر والكمية ويطبع القيمة المُعادة.

جرّب بنفسك

line_total <- function(item, qty) {
  menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)
  # اكتب الكود الخاص بك هنا
  ""
}

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

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

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

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