R لغة ذات أنواع ديناميكية، لذا لا يلزم عمومًا تحديد نوع المتغير. عامل الإسناد المفضل هو <-
x <- 42
avogadro <- 6.02e23
mystr <- "Hello, World!"
استخدام = بدلًا من <- سينجح غالبًا لكن ليس دائمًا، ولا يُنصح به لأنه أسلوب رديء.
وإذا كنت تعمل في RStudio، يمكنك إدخاله باختصار لوحة المفاتيح Alt-minus.
معظم العوامل مألوفة، لكن انتبه إلى %/% و%%:
2 + 3 # 5
2 - 3 # -1
2 * 3 # 6
2 / 3 # 0.6666667
8 %/% 3 # 2 (integer division)
8 %% 3 # 2 (remainder)
2 ^ 3 # 8 (exponential)
في R، تبدأ # تعليقًا من سطر واحد.
ولا توجد صيغة منفصلة للتعليقات متعددة الأسطر.
لتعريف دالة:
squareit <- function(x) {
x * x
}
يمكن للدالة أن تحتوي على صفر أو أكثر من الوسائط، مفصولة بفواصل.
الأقواس الهلالية () ضرورية مع function()، حتى لو لم توجد أي معاملات.
يمكن تحديد قيم افتراضية لوسائط الدالة، لكن يجب أن تأتي بعد أي وسائط بلا قيم افتراضية، ويُستخدم = لا <- في إسناد القيمة الافتراضية.
وكمثال لا فائدة كبيرة منه:
squareit <- function(x = 42) {
x * x
}
squareit()
#> [1] 1764
الأقواس المعقوفة { } ليست ضرورية تمامًا لأجسام الدوال المكوّنة من سطر واحد، لكن إدراجها يُعدّ أسلوبًا جيدًا.
ستُرجع R تلقائيًا القيمة الأخيرة للدالة، كما في الأمثلة أعلاه.
يمكن استخدام return() في أي مكان داخل جسم الدالة لجعل قيمة الإرجاع صريحة.
استدعاء دالة يشبه ما هو عليه في كثير من اللغات الأخرى:
squareit(3)
#> [1] 9
في هذا التمرين ستكتب بعض الكود لمساعدتك على طهي لازانيا رائعة من كتاب الطبخ المفضل لديك.
لديك أربع مهام، وكلها متعلقة بالوقت المستغرق في طهي اللازانيا.
عرّف الدالة expected_minutes_in_oven() التي لا تأخذ أي معاملات وتُرجع عدد الدقائق التي ينبغي أن تبقى فيها اللازانيا في الفرن. وفقًا لكتاب الطبخ، زمن الفرن المتوقع بالدقائق هو 60.
> expected_minutes_in_oven()
[1] 60
عرّف الدالة remaining_time_in_minutes التي تأخذ عدد الدقائق الفعلي الذي قضته اللازانيا في الفرن كمعامل، وتُرجع عدد الدقائق التي لا تزال اللازانيا بحاجة إلى قضائها في الفرن، بناءً على زمن الفرن المتوقع بالدقائق من المهمة السابقة.
> remaining_time_in_minutes(50)
[1] 10
عرّف الدالة prep_time_in_minutes() التي تأخذ عدد الطبقات التي أضفتها إلى اللازانيا كمعامل، وتُرجع عدد الدقائق التي استغرقتها في تحضير اللازانيا، بافتراض أن تحضير كل طبقة يستغرق منك دقيقتين.
> prep_time_in_minutes(2)
[1] 4
عرّف الدالة elapsed_time_in_minutes التي تأخذ وسيطين: الوسيط الأول هو عدد الطبقات التي أضفتها إلى اللازانيا، والمعامل الثاني هو عدد الدقائق التي قضتها اللازانيا في الفرن. ينبغي أن تُرجع الدالة مجموع الدقائق التي عملتها في طهي اللازانيا، وهو مجموع زمن التحضير بالدقائق والزمن بالدقائق الذي قضته اللازانيا في الفرن حتى الآن.
> elapsed_time_in_minutes(3, 20)
[1] 26
سجّل في Exercism لتتعلّم وتتقن R عبر 21 مفهومًا111 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.