R 语言 流程控制
-
流程控制
流程控制要求程序员指定一个或多个要由程序评估或测试的条件,以及确定该条件为true时要执行的一个或多个语句,为false条件时要执行的其他语句。。以下是大多数编程语言中常见的典型决策结构的一般形式-R提供以下类型的决策声明。 -
if 声明
if 语句由一个布尔表达式后跟一个或多个语句。在R中创建if语句的基本语法是-if(boolean_expression) { // statement(s) will execute if the boolean expression is true. }
如果布尔表达式的值为true,则将执行if语句中的代码块。如果布尔表达式的计算结果为false,则将执行if语句结束之后(右花括号之后)的第一组代码。
尝试一下x <- 30L if(is.integer(x)) { print("X is an Integer") }
编译并执行上述代码后,将产生以下结果-[1] "X is an Integer"
-
if ... else 声明
if 语句可以跟着一个可选的 else 语句,当布尔表达式是假的,其执行的语句。在R中创建if ... else语句的基本语法是-if(boolean_expression) { // statement(s) will execute if the boolean expression is true. } else { // statement(s) will execute if the boolean expression is false. }
如果布尔表达式的值为true,则将执行if代码块,否则将执行else代码块。
尝试一下x <- c("what","is","truth") if("Truth" %in% x) { print("Truth is found") } else { print("Truth is not found") }
编译并执行上述代码后,将产生以下结果-[1] "Truth is not found"
-
if ... else if ... else 声明
一个if语句可以跟着一个else if,else语句,使用if... else if语句可这是为了测试各种条件非常有用的。使用if,else if,else语句时,要牢记几点。- if可以有零或一个else,它必须出现在任何的if else之后。
- if可以具有零个或多个else if,并且它们必须排在else之前。
- 一旦else if测试为true,就不会在对后面的else if和else进行测试。
在R中创建if ... else if ... else语句的基本语法是-if(boolean_expression 1) { // Executes when the boolean expression 1 is true. } else if( boolean_expression 2) { // Executes when the boolean expression 2 is true. } else if( boolean_expression 3) { // Executes when the boolean expression 3 is true. } else { // executes when none of the above condition is true. }
如果布尔表达式的值为true,则将执行if代码块,否则将执行else代码块。
尝试一下x <- c("what","is","truth") if("Truth" %in% x) { print("Truth is found the first time") } else if ("truth" %in% x) { print("truth is found the second time") } else { print("No truth found") }
编译并执行上述代码后,将产生以下结果-[1] "truth is found the second time"
-
switch 声明
switch语句允许一个变量来针对值的列表平等进行测试。每个值称为一个case,并针对每种情况检查要打开的变量。在R中创建if ... else if ... else语句的基本语法是-switch(expression, case1, case2, case3....)
以下规则适用于switch语句-- 如果expression的值不是字符串,则将其强制为整数。
- switch内可以有任意数量的case语句。每个案例后面都跟要比较的值和一个冒号。
- 如果整数的值在1到nargs()-1(最大参数个数)之间,则将评估case条件的相应元素并返回结果。
- 如果expression计算为字符串,则该字符串(完全)与元素名称匹配。
- 如果有多个匹配项,则返回第一个匹配元素。
- 没有默认参数可用。
- 在不匹配的情况下,如果存在...的未命名元素,则返回其值。(如果有多个这样的参数,则返回错误。)
尝试一下x <- switch( 3, "first", "second", "third", "fourth" ) print(x)
编译并执行上述代码后,将产生以下结果-[1] "third"