# Control Structures Loops in R

As part of Data Science tutorial Series in my previous post I posted on basic data types in R. I have kept the tutorial very simple so that beginners of R programming  may takeoff immediately.
Please find the online R editor at the end of the post so that you can execute the code on the page itself.
In this section we learn about control structures loops used in R. Control strcutures in R contains conditionals, loop statements like any other programming languages.

Loops are very important and forms backbone to any programming languages.Before we get into the control structures in R, just type as below in Rstudio:
``` ?control
```

If else statement:
```#See the code syntax below for if else statement
if(x>1){
print("x is greater than 1")
}else{
print("x is less than 1")
}

#See the code below for nested if else statement

x=10
x=10
if(x>1 & x<7){
print("x is between 1 and 7")}else if(x>8 & x< 15){
print("x is between 8 and 15")
}

[1] "x is between 8 and 15"
```

For loops:
As we know for loops are used for iterating items
``` #Below code shows for  loop implementation
x = c(1,2,3,4,5)
for(i in 1:5){
print(x[i])
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
```

While loop :

``` #Below code shows while loop in R
x = 2.987
while(x <= 4.987) {
x = x + 0.987
print(c(x,x-2,x-1))
}
[1] 3.974 1.974 2.974
[1] 4.961 2.961 3.961
[1] 5.948 3.948 4.948
```

Repeat Loop:
The repeat loop is an infinite loop and used in association with a break statement.

``` #Below code shows repeat loop:
a = 1
repeat { print(a) a = a+1 if(a > 4) break }
[1] 1
[1] 2
[1] 3
[1] 4
```

Break statement:
A break statement is used in a loop to stop the iterations and flow the control outside of the loop.

``` #Below code shows break statement:
x = 1:10
for (i in x){
if (i == 2){
break
}
print(i)
}
[1] 1
```

Next statement:
Next statement enables to skip the current iteration of a loop without terminating it.

``` #Below code shows next statement
x = 1: 4
for (i in x) {
if (i == 2){
next}
print(i)
}
[1] 1
[1] 3
[1] 4
```

Creating a function in R:
function() is a built-in R function whose job is to create functions. In the below example function() takes one parameter x, executes a for loop logic.
The function object thus created using function() is assigned to a variable ('words.names'). Now this created function will be called using the variable 'word.names'

``` #Below code shows us, how a function is created in R:

Syntax:
function_name = function(parameters,..){ code}

words = c("R", "datascience", "machinelearning","algorithms","AI")
words.names = function(x) {
for(name in x){
print(name)
}
}
#Calling the function
words.names(words)
[1] "R"
[1] "datascience"
[1] "machinelearning"
[1] "algorithms"
[1] "AI"
```

Hands on exercise of what we have learnt so far

```We create a data frame DF, run for loop, ifelse in a function and call the function
#create 3 vectors name,age,salary
name = c("David","John","Mathew")
age = c(30,40,50)
salary = c(30000,120000,55000)
#create a data frame DF by combining the 3 vectors using cbind() function
DF = data.frame(cbind(name,age,salary))
#display DF
DF
name age salary
1  David  30  30000
2   John  40 120000
3 Mathew  50  55000
#dimensions of DF
dim(DF)
[1] 3 3

#write a function which displays the salaried person name
findHighSalary = function(df){
Maxsal = 0
empname = ""
for(i in 1:nrow(DF)){
tmpsal = as.numeric(DF[i,3] )
if(tmpsal > Maxsal){
Maxsal = tmpsal
empname = DF[i,1]
}
}
return(as.character(empname))
}
#calling the function
findHighSalary(DF)
[1] "Mathew"
```

#### 30 comments:

1. Hello there, just became aware of your blog through Google, and found that it is really informative. I am gonna watch out for brussels. I will be grateful if you continue this {in future}. Many people will be benefited from your writing. Cheers! Social media

2. I used to be very happy to seek out this internet-site.I wanted to thanks on your time for this excellent read!! I definitely having fun with each little bit of it and I've you bookmarked to check out new stuff you weblog post. concrete cylinder

3. Wow! This blog looks just like my old one! It's on a totally different subject but it has pretty much the same page layout and design. Excellent choice of colors! I really like your blog.. very nice colors & theme. Did you create this website yourself or did you hire someone to do it for you? Plz answer back as I'm looking to create my own blog and would like to know where u got this from. thanks teeth whitening singapore price

4. Incredible site, Stack give you warm with a not all that terrible way. I am here on this http://www.ukraineoutsourcingrates.com/net-development-ukraine-rates/ site on the grounds that to consider the smokestack blames and influences my home stack to denounce free. Your data is so cool.

5. I do agree with all of the ideas you've presented in your post. They're really convincing and will certainly work. Still, the posts are very short for starters. Could you please extend them a bit from next time? Thanks for the post. digital advertising Singapore

6. Hey There. I discovered your blog the use of msn. This is a really neatly written article. I will be sure to bookmark it and return to learn extra of your useful info. Thanks for the post. I will definitely comeback. digital marketing

7. Definitely consider that which you stated. Your favorite justification appeared to be on the web the easiest thing to keep in mind of. I say to you, I definitely get irked at the same time as other people think about concerns that they plainly do not recognize about. You managed to hit the nail upon the highest as smartly as outlined out the whole thing with no need side-effects , other folks could take a signal. Will likely be again to get more. Thanks infographics in Singapore website

8. Hey, I think your website might be having browser compatibility issues. When I look at your website in Safari, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, great blog!email marketing singapore

9. Hi just wanted to give you a quick heads up and let you know a few of the pictures aren't loading properly. I'm not sure why but I think its a linking issue. I've tried it in two different browsers and both show the same outcome. website design services Singapore

10. I love your blog.. very nice colors & theme. Did you create this website yourself or did you hire someone to do it for you? Plz reply as I'm looking to construct my own blog and would like to find out where u got this from. thank you customised jewellery singapore

11. This design is spectacular! You definitely know how to keep a reader entertained. Between your wit and your videos, I was almost moved to start my own blog (well, almost...HaHa!) Wonderful job. I really enjoyed what you had to say, and more than that, how you presented it. Too cool! corporate gift singapore

12. Hi there this is somewhat of off topic but I was wondering if blogs use WYSIWYG editors or if you have to manually code with HTML. I'm starting a blog soon but have no coding know-how so I wanted to get advice from someone with experience. Any help would be enormously appreciated! accounting service in Singapore

13. Wonderful blog! Do you have any hints for aspiring writers? I'm hoping to start my own website soon but I'm a little lost on everything. Would you suggest starting with a free platform like Wordpress or go for a paid option? There are so many options out there that I'm totally confused .. Any suggestions? Many thanks! sem seo

14. I’m not certain where you are getting your info, but good topic. I must spend some time studying much more or working out more. Thank you for excellent info I used to be searching for this info for my mission. nose filler singapore

15. Hello, I think your website might be having browser compatibility issues. When I look at your blog site in Opera, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, terrific blog!social media in Singapore

16. Today, I went to the beachfront with my children. I found a sea shell and gave it to my 4 year old daughter and said "You can hear the ocean if you put this to your ear." She put the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is totally off topic but I had to tell someone!smok mag baby

17. I really like your blog.. very nice colors & theme. Did you design this website yourself or did you hire someone to do it for you? Plz respond as I'm looking to design my own blog and would like to find out where u got this from. cheers
best bed bug exterminator nyc

18. Hello would you mind sharing which blog platform you're working with? I'm looking to start my own blog soon but I'm having a hard time choosing between BlogEngine/Wordpress/B2evolution and Drupal. The reason I ask is because your layout seems different then most blogs and I'm looking for something completely unique. best thing for cellulite on thighs

19. Hi there, i read your blog occasionally and i own a similar one and i was just curious if you get a lot of spam remarks? If so how do you reduce it, any plugin or anything you can advise? I get so much lately it's driving me insane so any support is very much appreciated. top web design companies

20. I was wondering if you ever considered changing the page layout of your blog? Its very well written; I love what youve got to say. But maybe you could a little more in the way of content so people could connect with it better. Youve got an awful lot of text for only having one or two images. Maybe you could space it out better?
seo in singapore

21. That requires a process to determine whether there is smoke and whether your right to fresh air trumps my right to blow smoke wherever I want. To determine what rights we each have, we create government.

media marketing in Singapore

22. My pal Verruca used to be within the equal line she lives in Acne, She observed a brand new marketplace by way of handing out loose samples external the STD hospital.

marketing firm

23. Simply want to say your article is as amazing. The clarity in your post is just nice and i can assume you are an expert on this subject. Fine with your permission allow me to grab your feed to keep up to date with forthcoming post. Thanks a million and please carry on the gratifying work.
Facebook

24. Part of the problem of making an accurate voltmeter is that of calibration to check its accuracy.

marketing courses

25. Wonderful goods from you, man. I have understand your stuff previous to and you're just extremely magnificent. I really like what you've acquired here, certainly like what you are stating and the way in which you say it. You make it entertaining and you still care for to keep it smart. I cant wait to read far more from you. This is actually a great website. Creating a professional and user-friendly website design

26. Greetings from Colorado! I'm bored to death at work so I decided to browse your site on my iphone during lunch break. I really like the info you present here and can't wait to take a look when I get home. I'm shocked at how quick your blog loaded on my cell phone .. I'm not even using WIFI, just 3G .. Anyhow, great blog!how to choose a web design company

27. Thanks for the post, can I set it up so I receive an update sent in an email whenever you make a new post? seo marketing singapore

28. Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You obviously know what youre talking about, why throw away your intelligence on just posting videos to your weblog when you could be giving us something enlightening to read?
Good math tuition centre