if ( Villkor ) {
Kod om Villkor == TRUE
}
if ( Villkor ) {
Kod om Villkor == TRUE
} else {
Kod om Villkor == FALSE
}
if ( Villkor 1 ) {
Kod om Villkor 1 == TRUE
} else if ( Villkor 2 ){
Kod om Villkor 2 == TRUE
} else {
Kod om Villkor 1 och 2 == FALSE
}
prgm <- "R"
if ( prgm == "R" ) { cat("Kul!") }
Kul!
prgm <- "Excel"
if ( prgm == "R" ) { cat("Kul!") }
prgm <- "Excel"
if ( prgm == "R" ) {
print("Kul!")
} else if ( prgm == "Python"){
print("Okej då!")
} else {
print("Ehhh...")
}
[1] "Ehhh..."
for
, loopar över en vektor/listafor ( elem in vektor ) {
# Kod som anropas en gång per element
# elem är ett element i vektorn
}
vektor <- c("Oleg", "Annika", "Lotta")
for ( element in vektor ) {
print(element)
}
[1] "Oleg"
[1] "Annika"
[1] "Lotta"
for ( element in 1:5 ) {
print(element)
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
Vi kan loopa på flera sätt:
for ( element in vektor ) {
print(element)
}
for ( index in seq_along(vektor) ) {
print(vektor[index])
}
for ( index in 1:length(vektor) ) {
print(vektor[index])
}
A <- matrix(1:6, nrow = 2)
for ( i in 1:2 ) {
for ( j in 1:3 ) {
text<-paste("r:",i," k:",j," v:",A[i,j])
print(text)
}
}
[1] "r: 1 k: 1 v: 1"
[1] "r: 1 k: 2 v: 3"
[1] "r: 1 k: 3 v: 5"
[1] "r: 2 k: 1 v: 2"
[1] "r: 2 k: 2 v: 4"
[1] "r: 2 k: 3 v: 6"
Kontrollstruktur | Effekt |
---|---|
next() |
Börjar om med nästa iteration direkt |
break() |
Avbryter den aktuella/innersta loopen. |
stop() |
Avbryter allt och genererar ett felmeddelande (Fungerar även i funktioner) |
# skriv ut udda tal:
for ( i in 1:10 ) {
if(i %% 2 == 0) { next() }
print(i)
}
[1] 1
[1] 3
[1] 5
[1] 7
[1] 9
for ( i in 1:3 ) {
for ( letter in c("a","b","c") ) {
if(letter == "b") { break() }
print(letter)
}
}
[1] "a"
[1] "a"
[1] "a"
for ( i in 1:3 ) {
for ( letter in c("a","b","c") ) {
if(letter == "b") { stop("Mitt fel!") }
print(letter)
}
}
[1] "a"
Error: Mitt fel!
while ( Villkor ) {
# Kod som anropas så länge Villkor == TRUE
}
Villkor
måste kunna utvärderas innan loopen startarrepeat()
repeterar kod till break
i <- 1 # Obs!
while ( i < 5 ) {
print(i)
i <- i + 1
}
[1] 1
[1] 2
[1] 3
[1] 4
stop()
avbryter funktioner/loopar och meddelar ett felwarning()
warnings()
: skriva ut tidigare varningarfor (i in 1:2){
print(i)
warning(paste("Farligt värre", i))
}
[1] 1
[1] 2
Warning messages:
1: Farligt värre 1
2: Farligt värre 2
Det uppstår ofta fel vid programmering! Debugging handlar om att hitta orsaken till att en kod/funktion inte fungerar som det var tänkt. Olika typer av fel:
x<-0
, y<-3
, y/x
. cat()
, print()
eller message()
för att skriva ut värden på olika variabler -> få en uppfattning av vad som händer i en funktion
paste()
för att kombinera text och variablerbrowser()
: “hoopar in i funktionen på valt ställe”
n
: kör nästa rad kodc
: kör allt i funktion/loopQ
: avslutadebugg()
: “hoopar in i funktionen från början”