- Learning Shiny
- Hernán G. Resnizky
- 423字
- 2021-07-09 21:46:11
Control structures in R
Control structures in computer programming are statements that decide the execution (or not) of certain pieces of code. In while
and if
, they are based on a condition that evaluates to TRUE
or FALSE
, and in for
, the statement is executed for every element of the input sequence.
In R, all the control structures have the same coding pattern, as follows:
control_structure(condition or sequence){code block}
The if...else block
The following is a small example of an if...else
block in R. You can play with it by changing the value of a
:
> a <- 5 > if(a > 0){print("a is greater than 0")} else + { print("a is smaller than 0")} [1] "a is greater than 0"
With an else...if
statement, it would be:
> a <- 10 > if(a < 0 ){ + print("a is smaller than 0")} else if(a >= 0 & a <= 5) + { print("a is between 0 and 5")} else + { print("a is greater than 5")} [1] "a is greater than 5"
The while loop
The use of while
must be well controlled, as it can lead to infinite or large loops, even causing system collapse. An example of this loop is as follows:
> while(a < 4){ + print(paste("This is iteration",a)) + a <- a + 1 + } [1] "This is iteration 1" [1] "This is iteration 2" [1] "This is iteration 3"
The for loop
The for
loop is a special form of control structure as it does not require an explicit condition. However, it is implicitly given in the length of the sequence passed, that is, it will stop when it comes to its last element in the vector that is passed. These vectors can be of any class.
The following is a loop over a character vector:
> vector <- c("aaa","bbb","ccc") > for(i in vector){ + + print(i) + + } [1] "aaa" [1] "bbb" [1] "ccc"
The following is a loop over a numeric vector:
> numbers <- 1:3 > for(i in numbers){ + + print(i + 2) + + } [1] 3 [1] 4 [1] 5
Here, i
replaces the elements of the loop over the iterations during the execution of the code.
The switch statement
Although switch()
is not strictly a control structure, it works in the same way as if()
. In fact, it is an abbreviation of a chain of if
/else...if
/else
statements where the condition matches an exact value. Switch has different behaviors and logic based on whether the value that is being evaluated matches a string or a number.
In the case of strings, a default value (the else
statement) is allowed, while in the case of numbers, it is not. A number in the condition argument implicitly refers to an index. For example, see the following:
if(a == 1) { print("a is 1")} else if (a == 2) {print("a is 2")} else if ( a == 3) {print ("a is 3")}
This could be rewritten as shown here:
print(switch(a,"a is 1","a is 2","a is 3"))
In the case of characters, each of the cases must be explicit, except for the default, as follows:
> inp <- "b" > switch(inp, + a=print("inp is a"), + b=print("inp is b"), + c=print("inp is c")) [1] "inp is b"
The following is an example with a default case:
> inp <- "d" > > switch(inp, + a=print("inp is a"), + b=print("inp is b"), + c=print("inp is c"), + print("inp is not a, b, or c")) [1] "inp is not a, b, or c"
- 軟件項目估算
- C語言程序設計實踐教程(第2版)
- Python快樂編程:人工智能深度學習基礎
- SQL Server 2012數據庫技術及應用(微課版·第5版)
- C# 從入門到項目實踐(超值版)
- Java開發入行真功夫
- Implementing Cisco Networking Solutions
- Mastering Kali Linux for Web Penetration Testing
- Learning Firefox OS Application Development
- Natural Language Processing with Java and LingPipe Cookbook
- Kubernetes源碼剖析
- Python預測之美:數據分析與算法實戰(雙色)
- ANSYS FLUENT 16.0超級學習手冊
- JSP應用與開發技術(第3版)
- Spring Boot學習指南:構建云原生Java和Kotlin應用程序