English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يتطلب بناء الحكم من المبرمج تحديد واحد أو أكثر من الشروط التي يجب تقييمها أو اختبارها، بالإضافة إلى الأوامر التي يجب تنفيذها عند صحة الشروط (مطلوبة) والأوامر التي يجب تنفيذها عند خطأ الشروط (اختيارية).
下面是大多数编程语言中典型的判断结构的一般形式:
R 语言提供了以下类型的判断语句:
if 语句
if...else 语句
جملة switch
一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
نموذج النص هو:
if(boolean_expression) { // 布尔表达式为真将执行的语句 }
如果布尔表达式 boolean_expression 为 ture 执行这里面的代码,如果 为 false 则不执行。
x <- 50L if(is.integer(x)) { print("X 是一个整数") }
إذا قمت بتشغيل الكود أعلاه، النتيجة ستكون:
[1] "X 是一个整数"
一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
نموذج النص هو:
if(boolean_expression) { // 如果布尔表达式为真将执行的语句 } // 如果布尔表达式为假将执行的语句 }
如果布尔表达式 boolean_expression 为 true,则执行 if 块内的代码。如果布尔表达式为 false,则执行 else 块内的代码。
x <- c("google","w3codebox","taobao") if("w3codebox" %in% x) { print("包含 w3codebox") } print("不包含 w3codebox") }
إذا قمت بتشغيل الكود أعلاه، النتيجة ستكون:
[1] "包含 w3codebox"
如果有多个条件判断,可以使用 if...else if...else:
if(boolean_expression 1) { // 如果布尔表达式 boolean_expression 1 为真将执行的语句 } else if( boolean_expression 2) { // 如果布尔表达式 boolean_expression 2 为真将执行的语句 } else if( boolean_expression 3) { // 如果布尔表达式 boolean_expression 3 为真将执行的语句 } // 以上所有的布尔表达式都为 false 时执行 }
x <- c("google","w3codebox","taobao") if("weibo" %in% x) { print("第一个 if 包含 weibo") } else if ("w3codebox" %in% x) { print("第二个 if 包含 w3codebox") } print("لم يتم العثور على") }
إذا قمت بتشغيل الكود أعلاه، النتيجة ستكون:
[1] "الif الثاني يحتوي على w3codebox"
يسمح جملة switch باختبار حالة متغير يساوي قيم متعددة. كل قيمة تُدعى case.
نموذج النص هو:
switch(expression, case1, case2, case3....)
switch يجب اتباع القواعد التالية في جملة
switch في جملة expression هي تعبير ثابت، يمكن أن يكون عددًا صحيحًا أو نصًا، إذا كان عددًا صحيحًا، يتم العودة إلى موقع القيمة في case، إذا كان العدد الصحيح ليس في النطاق المحدد، يتم العودة إلى NULL
إذا تم العثور على أكثر من قيمة، يتم العودة إلى القيمة الأولى
expressionإذا كانت النصية، يتم العودة إلى القيمة المحددة للنصية في case، إذا لم يتم العثور على تطابق، يتم العودة إلى لا شيء
لا يمكن استخدام قيمة افتراضية في switch
مثال يظهر العودة إلى القيمة الثالثة:
x <- switch( 3, "google", "w3codebox", "taobao", "weibo" ) print(x)
إذا قمت بتشغيل الكود أعلاه، النتيجة ستكون:
[1] "taobao"
إذا كانت النصية، يتم العودة إلى القيمة المحددة للنصية
you.like<-"w3codebox" switch(you.like, google="www.google.com", w3codebox = "ar.oldtoolbag.com", taobao = "www.taobao.com")
إذا قمت بتشغيل الكود أعلاه، النتيجة ستكون:
[1] "ar.oldtoolbag.com"
إذا كان العدد الصحيح ليس في النطاق المحدد، يتم العودة إلى NULL
> x <- switch(4,"google","w3codebox","taobao") > x NULL > x <- switch(4,"google","w3codebox","taobao") > x NULL