R 语言 流程控制

  • 流程控制

    流程控制要求程序员指定一个或多个要由程序评估或测试的条件,以及确定该条件为true时要执行的一个或多个语句,为false条件时要执行的其他语句。。以下是大多数编程语言中常见的典型决策结构的一般形式-
    c decision_making
    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 ifelse语句,使用if... else if语句可这是为了测试各种条件非常有用的。
    使用if,else if,else语句时,要牢记几点。
    • if可以有零或一个else,它必须出现在任何的if else之后。
    • if可以具有零个或多个else if,并且它们必须排在else之前。
    • 一旦else if测试为true,就不会在对后面的else ifelse进行测试。
    在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"