- 101 Views
- Uploaded on

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

**An Image/Link below is provided (as is) to download presentation**

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

Part 9: flow control

J. Sebastián Tello

Iván Jiménez

Center forConservation and SustainableDevelopment

- 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

- 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

}

- 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

- Easyexample 3:

v<- letters

length(v)

result <- 0

for(i in v)

{

print(i)

result<- result+ 1

}

result

- 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

- 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)

}

- Open the file “9datos_MurciEnviroAmerica.txt”

BatData <- read.table(file=file.choose(), header=TRUE, sep="\t")

class(BatData)

names(BatData)

rich <- BatData$richness

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

enviro[1:5, ]

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[i] <- res.LM.i$adj.r.squared

}

LM.R2

- 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

}

- 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)

}

- 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

- 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 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 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()

}

}

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)

}

Download Presentation

Connecting to Server..