بسم الله الرحمن الرحيم

Conditionals and Control Flow

تاريخ النشر : Oct. 6, 2022

في هذا الفصل ، ستتعرف على العوامل العلائقية لمقارنة كائنات R ، والعوامل المنطقية مثل "and" and "or" للجمع بين قيم TRUE و FALSE. بعد ذلك ، ستستخدم هذه المعرفة لبناء جمل شرطية.


Relational Operators

Relational Operators1. العوامل العلائقية

العوامل الارتباطية ، أو المقارنة ، هي عوامل تساعدنا في معرفة كيفية ارتباط كائن R بآخر

  1. المساواة ==

يمكنك التحقق من تساوي كائنين. يمكنك القيام بذلك باستخدام علامة يساوي المزدوجة. يمكننا على سبيل المثال معرفة ما إذا كانت القيمة المنطقية TRUE تساوي القيمة المنطقية TRUE ، لأن TRUE تساوي TRUE. على العكس من ذلك ، فإن TRUE == FALSE ستعطينا FALSE. من المنطقي ، أليس كذلك؟ بصرف النظر عن المتغيرات المنطقية ، يمكننا أيضًا التحقق من تكافؤ الأنواع الأخرى. يمكننا أيضًا مقارنة السلاسل والأرقام.

  1. اللامساواة! =

على النقيض من عامل المساواة هو عامل عدم المساواة ، مكتوبًا كعلامة تعجب متبوعة بعلامة يساوي. يصبح نص هذه الجملة على النحو التالي: "hello" لا تساوي "goodbye". لأن هذه العبارة صحيحة ، ستخرج R TRUE. وبطبيعة الحال ، يمكن أيضًا استخدام عامل عدم المساواة للأرقام ، والمنطقية ، وبالطبع كائنات R الأخرى أيضًا.

  1. <و>

هناك حالات تحتاج فيها إلى أكثر من مجرد عوامل تشغيل المساواة وعدم المساواة. ماذا عن التحقق مما إذا كان كائن R "أقل من" أو "أكبر من" كائن R آخر؟ لن يكون هذا مفاجئًا: يمكنك استخدام علامة أقل من وأكبر من لهذا الغرض. في حالة القيم العددية ، إليك مثال مباشر: 3 أقل من 5 سيتم تقييمها إلى TRUE ، بينما 3 أكبر من 5 سيتم تقييمها إلى FALSE. بالنسبة للأرقام ، يكون هذا منطقيًا ، ولكن كيف يعمل هذا مع سلاسل الأحرف والقيم المنطقية؟ هل "مرحبا" أكبر من "وداعا"؟ هيا نكتشف! من الواضح أن "Hello" أكبر من "Goodbye" تُقَدِّم إلى TRUE ، لكن لماذا؟ ذلك لأن R يستخدم الأبجدية لفرز سلاسل الأحرف. بما أن "H" تأتي بعد "G" في الأبجدية ، فإن "Hello" تعتبر أكبر من "Goodbye". ماذا عن القيم المنطقية؟ هل TRUE أقل من FALSE؟ الاستعلام التالي يعطينا الجواب. لا يبدو. يتم تقييمها إلى FALSE. هذا لأنه تحت الغطاء ، يتوافق TRUE مع 1 و FALSE يتوافق مع 0. وبالطبع 1 ليس أقل من 0 ، وبالتالي نتيجة FALSE.

  1. <= و> =

يمكنك أيضًا التحقق لمعرفة ما إذا كان كائن R أكبر من أو يساوي (أو أقل من أو يساوي) كائن R آخر. للقيام بذلك ، يمكنك استخدام علامة أقل من ، أو علامة أكبر من ، مع علامة يساوي. لذا فإن 5 أكبر من أو يساوي 3 بالإضافة إلى 3 أكبر من أو يساوي 3 سيُقيم في TRUE.

  1. العوامل والمتجهات العلائقية

أنت تعلم بالفعل أن R جيد جدًا مع النواقل. ماذا عن مقارنات R ، هل يمكنهم أيضًا التعامل مع المتجهات؟ لنفترض أنك سجلت عدد المشاهدات اليومية لملفك الشخصي على LinkedIn في الأسبوع السابق وقمت بتخزينها في متجه ، . إذا أردنا معرفة الأيام التي تجاوز فيها عدد مرات المشاهدة 10 ، فيمكننا استخدام علامة أكبر من مباشرةً. بالنسبة للعنصر الأول والثالث والسادس والسابع في المتجه ، يكون عدد المشاهدات أكبر من 10 ، لذا ستكون النتيجة لهذه العناصر هي TRUE.

  1. العوامل والمتجهات العلائقية

يمكنك أيضًا مقارنة المتجهات بالمتجهات ؛ لنفترض أنك سجلت أيضًا عدد المشاهدات لملفك الشخصي على Facebook في الأسبوع السابق وحفظتها في متجه آخر ، facebook. متى يكون عدد مشاهدات Facebook أقل من أو يساوي عدد مشاهدات LinkedIn؟ يوضح لنا التعبير التالي كيفية حساب ذلك. هل له معنى؟ في هذه الحالة ، تتم المقارنة لكل عنصر من عناصر المتجه ، واحدًا تلو الآخر. على سبيل المثال ، في اليوم الثالث ، يكون عدد مشاهدات Facebook هو 5 وعدد مشاهدات LinkedIn هو 13. يتم تقييم المقارنة إلى TRUE ، حيث أن 5 أصغر من أو تساوي 13.

Equality

الشكل الأساسي للمقارنة هو المساواة ==. دعنا نلخص بناء الجملة بإيجاز. العبارات التالية جميعها تقيم إلى TRUE

3 == (2 + 1)
"intermediate" != "r"
TRUE != FALSE
"Rchitect" != "rchitect"

لاحظ من التعبير الأخير أن R حساس لحالة الأحرف: "R" لا يساوي "r".

# Comparison of logicals
TRUE == FALSE

# Comparison of numerics
(-6 * 14) != (17 - 101)

# Comparison of character strings

"useR" =="user"

# Compare a logical with a numeric
TRUE ==1
[1] FALSE
[2] FALSE
[3] FALSE
[4] TRUE
Greater and less than

عامل التشغيل أصغر من وأكبر من: <و>. يمكنك أيضًا إضافة علامة يساوي للتعبير عن أصغر من أو يساوي أو أكبر من أو يساوي ، على التوالي. ألق نظرة على تعبيرات R التالية ، والتي يتم تقييمها جميعها على FALSE:

(1 + 2) > 4
"dog" < "Cats"
TRUE <= FALSE

تذكر أنه لمقارنة السلسلة ، تحدد R العلاقة الأكبر من العلاقة بناءً على الترتيب الأبجدي. أيضًا ، ضع في اعتبارك أن TRUE يتم التعامل معها على أنها 1 للعمليات الحسابية ، ويتم التعامل مع FALSE على أنها 0. لذلك ، FALSE <TRUE هي TRUE.

مثال

# Comparison of numerics
-6*5+2 >= -10+1

# Comparison of character strings
"raining" <= "raining dogs"

# Comparison of logicals
TRUE > FALSE
Compare vectors

أنت تدرك بالفعل أن R جيد جدًا مع المتجهات. بدون الحاجة إلى تغيير أي شيء بخصوص بنية التعليمات البرمجية ، تعمل عوامل العلاقات في R أيضًا على المتجهات.

على سبيل المثال ، تريد معرفة نشاط متابعينك على منصات التواصل الاجتماعي وتقرر النظر في نتائجك على LinkedIn و Facebook. يقوم نموذج التعليمات البرمجية في المحرر بتهيئة المتجهات LinkedIn و Facebook. يحتوي كل من المتجهات على عدد مشاهدات الملف الشخصي التي حصلت عليها ملفاتك الشخصية على LinkedIn و Facebook على مدار الأيام السبعة الماضية.

Using relational operators, find a logical answer, i.e. TRUE or FALSE, for the following questions:

  • On which days did the number of LinkedIn profile views exceed 15?
  • When was your LinkedIn profile viewed only 5 times or fewer?
  • When was your LinkedIn profile visited more often than your Facebook profile?
# The linkedin and facebook vectors have already been created for you
linkedin <- c(16, 9, 13, 5, 2, 17, 14)
facebook <- c(17, 7, 5, 16, 8, 13, 14)

# Popular days

linkedin_review = linkedin >15
linkedin_review
# Quiet days
linkedin_review = linkedin <= 5
linkedin_review

# LinkedIn more popular than Facebook

linkedin_review = linkedin > facebook
linkedin_review
Compare matrices

قدرة R على التعامل مع هياكل البيانات المختلفة للمقارنات لا تتوقف عند المتجهات. تعمل المصفوفات والعوامل العلائقية أيضًا معًا بسلاسة!

بدلاً من المتجهات (كما في التمرين السابق) ، يتم الآن تخزين بيانات LinkedIn و Facebook في مصفوفة تسمى المشاهدات. يحتوي الصف الأول على معلومات LinkedIn ؛ الصف الثاني معلومات الفيسبوك. لا يزال المتجهان الأصليان Facebook و LinkedIn متاحين أيضًا.

# The social data has been created for you
linkedin <- c(16, 9, 13, 5, 2, 17, 14)
facebook <- c(17, 7, 5, 16, 8, 13, 14)
views <- matrix(c(linkedin, facebook), nrow = 2, byrow = TRUE)

# When does views equal 13?
v_less_13 <-  views ==13
v_less_13
# When is views less than or equal to 14?
v_less_14 <- views <= 14
v_less_14
& and |

قبل أن تبدأ في التدريبات التالية ، ألق نظرة على تعبيرات R التالية. سيتم تقييمهم جميعًا إلى TRUE:

TRUE & TRUE
FALSE | TRUE
5 <= 5 & 2 < 3
3 < 4 | 7 < 6

احذر:

3 <x <7

للتحقق مما إذا كانت x بين 3 و 7 لن تعمل ؛ انك سوف تحتاج

x< 3 & x <7

من أجل هذا.

في هذا التمرين ، ستعمل مع المتغير الأخير. هذا المتغير يساوي القيمة الأخيرة لمتجه LinkedIn الذي عملت معه سابقًا. يمثل ناقل LinkedIn عدد مشاهدات ملفك الشخصي على LinkedIn في الأيام السبعة الماضية ، هل تتذكر؟ تم تحديد كل من المتغيرات LinkedIn وآخرها مسبقًا لك.

# The linkedin and last variable are already defined for you
linkedin <- c(16, 9, 13, 5, 2, 17, 14)
last <- tail(linkedin, 1)

# Is last under 5 or above 10?
last < 5 | last > 10

# Is last between 15 (exclusive) and 20 (inclusive)?
last > 15 & last <= 20
& and | (2)

العودة إلي Intermediate R (تلخيصات من DATA CAMP)