English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

جملة الحكم في R

يتطلب بناء الحكم من المبرمج تحديد واحد أو أكثر من الشروط التي يجب تقييمها أو اختبارها، بالإضافة إلى الأوامر التي يجب تنفيذها عند صحة الشروط (مطلوبة) والأوامر التي يجب تنفيذها عند خطأ الشروط (اختيارية).

下面是大多数编程语言中典型的判断结构的一般形式:

R 语言提供了以下类型的判断语句:

  • if 语句

  • if...else 语句

  • جملة switch

if 语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

نموذج النص هو:

if(boolean_expression) {
    // 布尔表达式为真将执行的语句
}

如果布尔表达式 boolean_expression  为 ture 执行这里面的代码,如果 为 false 则不执行。

x <- 50L
if(is.integer(x)) {
   print("X 是一个整数")
}

إذا قمت بتشغيل الكود أعلاه، النتيجة ستكون:

[1] "X 是一个整数"

if...else 语句

一个 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

يسمح جملة 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