ELEMENTY PROGRAMOWANIA
if -> pozwala na warunkowe wykonywanie fragmentu kodu
Przykład 1 Czy liczba jest parzysta?
liczba<-56
if(liczba%%2==0){
cat("liczba jest parzysta\n")
}else{ # ważne by "else" było od razu po "}"
cat("liczba jest nieparzysta\n")}## liczba jest parzysta
ifelse -> pozwala na skrócenie zapisu instrukcji warunkowej Wykorzystywnay gdy kod warunkowy jest krótki Świetnie się sprawdza do porownywania wektorów
Przykład 2 Porównanie dwóch zmiennych
jeden<-"mama"
dwa<-"tata"
ifelse(jeden==dwa,"to samo", "inne" )## [1] "inne"
Przykład 3 Porównanie liczb rzeczywistych
a<-9
b<-17
ifelse(25==a+b, "prawda", "nie prawda")## [1] "nie prawda"
Przykład 4
wektor<-rnorm(10)
wektor## [1] 0.3259747 -0.3181251 -0.3232528 -1.4703931 0.8442784 1.2241223
## [7] -0.5015233 0.2444951 -0.3389639 0.4725020
ifelse(wektor<0, -1, 1)## [1] 1 -1 -1 -1 1 1 -1 1 -1 1
for -> stosowany, gdy liczba powtórzeń pętli jest z góry znana
Przykład 5 Krok iteracji
for(i in 1:5){
cat(paste("krok iteracji"), paste(i, "\n" ))
}## krok iteracji 1
## krok iteracji 2
## krok iteracji 3
## krok iteracji 4
## krok iteracji 5
Przykład 6
liczby<- c("mama", "tata","kot")
for( i in liczby){
cat(paste(i, "\n"))
}## mama
## tata
## kot
Przykład 7
liczby<- c("mama", "tata","kot", "pies")
for( i in (length(liczby)-1)){
cat(paste(i, "\n"))
}## 3
Przykład 8
liczby<- c("mama", "tata","kot", "pies")
for( i in 1:(length(liczby)-1)){
cat(paste(i, "\n"))
}## 1
## 2
## 3
while-> stosowany, gdy powtórzenia maja być wykonywane tak długo, jak długo prawdziwy jest podany warunek
Przykład 9
liczba<-7
while (liczba>0){
cat(paste("liczba= ", liczba, "\n"))
liczba<-liczba-2
}## liczba= 7
## liczba= 5
## liczba= 3
## liczba= 1
Przykład 10
i <- 1
while (i < 6) {
print(i)
i = i+1
}## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
Przykład 11 Zatrzymaj pętle gdy i=4
i <- 1
while (i < 6) {
print(i)
i <- i + 1
if (i == 4) {
break
}
} ## [1] 1
## [1] 2
## [1] 3
Przykład 12
data(iris) # Loading exemplifying data set
head(iris) ## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
running_index <- 1 while(is.numeric(iris[ , running_index])) { # zaczynamy pętle
iris[ , running_index] <- iris[ , running_index] + 50 # blok pętli, jeśli kolumna/zmienna jest "numeric" to dodaj 50 do wartości zmiennej
running_index <- running_index + 1 # przejście z jednej do drugiej kolumny/zmiennej
}Przykład 13 Wyświetl liczby od 1 do 5 omijając liczbę 3
number = 1
while(number <= 5) {
if (number == 3) {
number = number + 1
next # jesli warunek spełniony, wartość pomijana
}
# wyświetl liczby
print(number)
# przyrost wektora numer o 1
number = number + 1
}## [1] 1
## [1] 2
## [1] 4
## [1] 5
Przykład 14 Wyświetl trzykrotność największej wartości z podanego wektora
pierwsza_funkcja<-function(wektor)
{
maximum<-max(wektor) #szukanie maksymalnej wartości w wektorze
wynik<-3*maximum
wynik
}pierwsza_funkcja(c(10,30,50,8,6,2,1,300))## [1] 900
Prostszy zapis
druga_funkcja<-function(wektor)
{
3*max(wektor)
}druga_funkcja(c(10,30,50,8,6,2,1,300))## [1] 900
Wyświetl liczby nieparzyste od 1 do 1000 używając pętli while i instrukcji warunkowej if
number = 1
while(number <= 1000) {
# omiń liczby, które są parzyste
if (number %% 2 == 0) {
number = number + 1
}
# wyświetl liczby
print(number)
# przyrost wektora numer o 1
number = number + 1
}Wyświetl liczby parzyste od 60 do 195 używając pętli while i instrukcji warunkowej if
number = 60
while(number <= 195) {
if (number %% 2 != 0) {
number = number+1
}
# wyświetl liczby
print(number)
# przyrost wektora numer o 1
number = number + 1
}