R basics workshop Part 9: flow control

1 / 18

# R basics workshop Part 9: flow control - PowerPoint PPT Presentation

R basics workshop Part 9: flow control. J. Sebasti án Tello Iván Jiménez. Center for Conservation and Sustainable Development. F low control. There are a number of constructs in R that allow you to control the flow of the code There are mainly 3 types:

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'R basics workshop Part 9: flow control' - imelda

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

R basics workshop

Part 9: flow control

J. Sebastián Tello

Iván Jiménez

Center forConservation and SustainableDevelopment

Flow control

• There are a number of constructs in R thatallowyouto control theflow of thecode
• There are mainly 3 types:
• Loops – for, while, repeat
• Breaking loops – break, next
• Conditionals – if, else and ifelse
• Wewillfocuson: for, while and if
• Forhelp:

?Control

“for” loops

• A loop is the repetition of a piece of code “n” times
• for is the most common construct to create loops
• This is the general structure of a “for” loop:

for(i in v)

{

code…

}

tab

Which means:

For each value that itakes from vector v, repeat:

{

this code

}

“for” loops

• Easy example 1:

v <- 1:10

for(i in v)

{

print(i)

}

Which means:

The vector v has values from 1 to 10 every 1

For each value that itakes from vectorv, repeat:

print the value of i into the screen

“for” loops

• Easyexample 2:

v<- letters

v

for(i in v)

{

print(i)

}

“for” loops

• Easyexample 3:

v<- letters

length(v)

result <- 0

for(i in v)

{

print(i)

result<- result+ 1

}

result

“for” loops

• Easyexample 4:

v <- c(1,3,5,2,4)

result <- 0

for(i in 1:length(v))

{

print( c(i, v[i]) )

result <- result + v[i]

}

result

“for” loops

• Easyexample 5:

col.v <- rainbow(100)

cex.v <- seq(1, 10, length.out=100)

plot(0:1, 0:1, type="n")

for(i in 1:200)

{

print(i)

points(runif(1), runif(1), pch=16, col=sample(col.v, 1), cex=sample(cex.v, 1))

Sys.sleep(0.1)

}

“for” loops

• Open the file “9datos_MurciEnviroAmerica.txt”

class(BatData)

names(BatData)

rich <- BatData\$richness

enviro <- BatData[,5:ncol(BatData)]

enviro[1:5, ]

“for” loops

LM.R2 <- rep(NA, ncol(enviro))

LM.R2

for(i in 1:ncol(enviro))

{

LM.i <- lm(rich ~ enviro[,i])

res.LM.i <- summary(LM.i)

}

LM.R2

“for” loops

LM.R2

names(LM.R2) <- names(enviro)

barplot(LM.R2)

“while” loops

• while is sometimes also very useful
• This is the general structure of a “while” loop:

while(condition)

{

code…

}

Which means:

While this condition is TRUE, repeat:

{

this code

}

“while” loops

• Easy example 1:

v <- 1:10

for(iin v)

{

print(i)

}

v <- 1:10

i <- 0

while(i < max(v))

{

i <- i+1

print(i)

}

“while” loops

• Easy example 1:

i <- 0

while(i < max(v))

{

i <- i+1

print(i)

}

v <- 1:10

Version 1

i <- 0

while(i < max(v))

{

print(i)

i <- i+1

}

Version 2

“while” loops

• Easy example 2:

Bp <- 0.1;Dp <- 0.1;Np <- 1-Bp-Dp

max.t <- 100; time <- 0; abund<- 10

plot(c(0, max.t), c(0, 100), type="n")

while(abund>0 & time<= max.t)

{

change <- sample(c(-1,0,1), size=abund,

prob=c(Dp, Np, Bp), replace=TRUE)

abund <- abund + sum(change)

time <- time + 1

points(time, abund, pch=16, col="black")

}

“if” condition

• if controls the flow by allowing code to run only if a condition is met
• Easy example 1:

v <- 1:10

for(i in v)

{

print(i)

if(i == 5)

print("Reached 5")

}

“if” condition and “break”

• if controls the flow by allowing code to run only if a condition is met
• Easy example 1:

v <- 1:10

for(i in v)

{

print(i)

if(i == 5)

{

print("Reached 5")

break()

}

}

“if” condition

trait<- 0; max.time <- 100

plot(c(0,max.time), c(-20, 20), type="n", ylab="Trait Value", xlab="Time")

points(0, trait, pch=16, col="black")

for(i in 1:max.time)

{

trait.shift <- rnorm(1, 0, 0.5)

trait<- trait+ trait.shift

if(trait.shift> 0) COL <- "gold"

if(trait.shift< 0) COL <- "lightblue"

points(i, trait, pch=16, col=COL)

Sys.sleep(0.2)

}