官术网_书友最值得收藏!

Controlling code flow

This section covers areas related to controlling the execution of your code. Using specific constructs such as if-else and switch, you can execute code conditionally. Constructs like for, while, and repeat, and help in executing the same code multiple times which is also known as looping. We will be exploring all these constructs in the following section.

Working with if, if-else, and ifelse

There are several constructs which help us in executing code conditionally. This is especially useful when we don't want to execute a bunch of statements one after the other sequentially but execute the code only when it meets or does not meet specific conditions. The following examples illustrate the same:

> num = 5
> if (num == 5){
+ cat('The number was 5')
+ }
The number was 5
> 
> num = 7
> 
> if (num == 5){
+ cat('The number was 5')
+ } else{
+ cat('The number was not 5')
+ }
The number was not 5
>
> if (num == 5){
+ cat('The number was 5')
+ } else if (num == 7){
+ cat('The number was 7')
+ } else{
+ cat('No match found')
+ }
The number was 7
> ifelse(num == 5, "Number was 5", "Number was not 5")
[1] "Number was not 5"

Working with switch

The switch function is especially useful when you have to match an expression or argument to several conditions and execute only if there is a specific match. This becomes extremely messy when implemented with the if-else constructs but is much more elegant with the switch function, as we will see next:

> switch(
+ "first",
+ first = "1st",
+ second = "2nd",
+ third = "3rd",
+ "No position"
+ )
[1] "1st"
> 
> switch(
+ "third",
+ first = "1st",
+ second = "2nd",
+ third = "3rd",
+ "No position"
+ )
[1] "3rd"
> # when no match, default statement executes
> switch(
+ "fifth",
+ first = "1st",
+ second = "2nd",
+ third = "3rd",
+ "No position"
+ )
[1] "No position"

Loops

Loops are an excellent way to execute code segments repeatedly when needed. Vectorization constructs are, however, more optimized than loops for working on larger data sets, but we will see that later in this chapter. For now, you should remember that there are three types of loops in R, namely, for, while, and repeat. We will look at all of them in the following examples:

> # for loop
> for (i in 1:10){
+ cat(paste(i," "))
+ }
1 2 3 4 5 6 7 8 9 10 
> 
> sum = 0
> for (i in 1:10){
+ sum <- sum + i
+ }
> sum
[1] 55
> 
> # while loop
> count <- 1
> while (count <= 10){
+ cat(paste(count, " "))
+ count <- count + 1
+ }
1 2 3 4 5 6 7 8 9 10 
> 
> # repeat infinite loop 
> count = 1
> repeat{
+ cat(paste(count, " "))
+ if (count >= 10){
+ break # break off from the infinite loop
+ }
+ count <- count + 1
+ }
1 2 3 4 5 6 7 8 9 10 
主站蜘蛛池模板: 天台县| 巨野县| 花莲县| 盘锦市| 达孜县| 马鞍山市| 昭平县| 同仁县| 沈阳市| 商河县| 永寿县| 沽源县| 乌拉特后旗| 晴隆县| 长治县| 敦化市| 鄱阳县| 漳州市| 鄯善县| 昌黎县| 上犹县| 沙雅县| 乐至县| 郴州市| 青川县| 荆门市| 绵竹市| 西吉县| 华坪县| 阿城市| 涿州市| 五大连池市| 井研县| 南澳县| 西峡县| 聊城市| 马关县| 全州县| 噶尔县| 清丰县| 鄄城县|