Relational Operators1. العوامل العلائقية
العوامل الارتباطية ، أو المقارنة ، هي عوامل تساعدنا في معرفة كيفية ارتباط كائن R بآخر
يمكنك التحقق من تساوي كائنين. يمكنك القيام بذلك باستخدام علامة يساوي المزدوجة. يمكننا على سبيل المثال معرفة ما إذا كانت القيمة المنطقية TRUE تساوي القيمة المنطقية TRUE ، لأن TRUE تساوي TRUE. على العكس من ذلك ، فإن TRUE == FALSE ستعطينا FALSE. من المنطقي ، أليس كذلك؟ بصرف النظر عن المتغيرات المنطقية ، يمكننا أيضًا التحقق من تكافؤ الأنواع الأخرى. يمكننا أيضًا مقارنة السلاسل والأرقام.
على النقيض من عامل المساواة هو عامل عدم المساواة ، مكتوبًا كعلامة تعجب متبوعة بعلامة يساوي. يصبح نص هذه الجملة على النحو التالي: "hello" لا تساوي "goodbye". لأن هذه العبارة صحيحة ، ستخرج R TRUE. وبطبيعة الحال ، يمكن أيضًا استخدام عامل عدم المساواة للأرقام ، والمنطقية ، وبالطبع كائنات R الأخرى أيضًا.
هناك حالات تحتاج فيها إلى أكثر من مجرد عوامل تشغيل المساواة وعدم المساواة. ماذا عن التحقق مما إذا كان كائن 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.
يمكنك أيضًا التحقق لمعرفة ما إذا كان كائن R أكبر من أو يساوي (أو أقل من أو يساوي) كائن R آخر. للقيام بذلك ، يمكنك استخدام علامة أقل من ، أو علامة أكبر من ، مع علامة يساوي. لذا فإن 5 أكبر من أو يساوي 3 بالإضافة إلى 3 أكبر من أو يساوي 3 سيُقيم في TRUE.
أنت تعلم بالفعل أن R جيد جدًا مع النواقل. ماذا عن مقارنات R ، هل يمكنهم أيضًا التعامل مع المتجهات؟ لنفترض أنك سجلت عدد المشاهدات اليومية لملفك الشخصي على LinkedIn في الأسبوع السابق وقمت بتخزينها في متجه ، . إذا أردنا معرفة الأيام التي تجاوز فيها عدد مرات المشاهدة 10 ، فيمكننا استخدام علامة أكبر من مباشرةً. بالنسبة للعنصر الأول والثالث والسادس والسابع في المتجه ، يكون عدد المشاهدات أكبر من 10 ، لذا ستكون النتيجة لهذه العناصر هي TRUE.
يمكنك أيضًا مقارنة المتجهات بالمتجهات ؛ لنفترض أنك سجلت أيضًا عدد المشاهدات لملفك الشخصي على Facebook في الأسبوع السابق وحفظتها في متجه آخر ، facebook. متى يكون عدد مشاهدات Facebook أقل من أو يساوي عدد مشاهدات LinkedIn؟ يوضح لنا التعبير التالي كيفية حساب ذلك. هل له معنى؟ في هذه الحالة ، تتم المقارنة لكل عنصر من عناصر المتجه ، واحدًا تلو الآخر. على سبيل المثال ، في اليوم الثالث ، يكون عدد مشاهدات Facebook هو 5 وعدد مشاهدات LinkedIn هو 13. يتم تقييم المقارنة إلى TRUE ، حيث أن 5 أصغر من أو تساوي 13.
الشكل الأساسي للمقارنة هو المساواة ==. دعنا نلخص بناء الجملة بإيجاز. العبارات التالية جميعها تقيم إلى 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
عامل التشغيل أصغر من وأكبر من: <و>. يمكنك أيضًا إضافة علامة يساوي للتعبير عن أصغر من أو يساوي أو أكبر من أو يساوي ، على التوالي. ألق نظرة على تعبيرات 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
أنت تدرك بالفعل أن R جيد جدًا مع المتجهات. بدون الحاجة إلى تغيير أي شيء بخصوص بنية التعليمات البرمجية ، تعمل عوامل العلاقات في R أيضًا على المتجهات.
على سبيل المثال ، تريد معرفة نشاط متابعينك على منصات التواصل الاجتماعي وتقرر النظر في نتائجك على LinkedIn و Facebook. يقوم نموذج التعليمات البرمجية في المحرر بتهيئة المتجهات LinkedIn و Facebook. يحتوي كل من المتجهات على عدد مشاهدات الملف الشخصي التي حصلت عليها ملفاتك الشخصية على LinkedIn و Facebook على مدار الأيام السبعة الماضية.
Using relational operators, find a logical answer, i.e. TRUE or FALSE, for the following questions:
# 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
قدرة 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
قبل أن تبدأ في التدريبات التالية ، ألق نظرة على تعبيرات 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
العودة إلي Intermediate R (تلخيصات من DATA CAMP)