if -> pozwala na warunkowe wykonywanie fragmentu kodu
Czy liczba jest większa od 5?
x <- 10
if (x > 5) {
print("x jest większe od 5")
}## [1] "x jest większe od 5"
Czy liczba jest dodatnia?
y <- -2
if (y >= 0) {
print("y jest dodatnie")
} else {
print("y jest ujemne")
}## [1] "y jest ujemne"
Instrukcja warunkowa, która sprawdza kategorię temepratury
temperature <- 18
if (temperature < 0) {
print("Mróz")
} else if (temperature < 15) {
print("Chłodno")
} else if (temperature < 25) {
print("Ciepło")
} else {
print("Gorąco!")
}## [1] "Ciepło"
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
Porównanie dwóch zmiennych
jeden<-"mama"
dwa<-"tata"
ifelse(jeden==dwa,"to samo", "inne" )## [1] "inne"
Porównanie liczb rzeczywistych
a<-9
b<-17
ifelse(25==a+b, "prawda", "nie prawda")## [1] "nie prawda"
wektor<-rnorm(10)
wektor## [1] 2.210834724 -0.091232617 0.679458520 -1.353650481 -0.007376652
## [6] -0.373227229 0.070974365 0.310639264 -0.519643493 -0.315670004
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
Wypisz liczby od 1 do 5
for (i in 1:5) {
print(i)
}## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
Wypisz liczby od 1 do 5 i dopisz, który to 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
Suma elementów wektora
numbers <- c(2, 4, 6, 8, 10)
sum_val <- 0
for (n in numbers) {
sum_val <- sum_val + n
}
print(paste("Suma =", sum_val))## [1] "Suma = 30"
liczby<- c("mama", "tata","kot")
for( i in liczby){
cat(paste(i, "\n"))
}## mama
## tata
## kot
liczby<- c("mama", "tata","kot", "pies")
for( i in (length(liczby)-1)){
cat(paste(i, "\n"))
}## 3
liczby<- c("mama", "tata","kot", "pies")
for( i in 1:(length(liczby)-1)){
cat(paste(i, "\n"))
}## 1
## 2
## 3
Warunek w pętli
wektor<-c(1:10)
for (n in wektor) {
if (n %% 2 == 0) {
print(paste(n, "jest parzyste"))
}
}## [1] "2 jest parzyste"
## [1] "4 jest parzyste"
## [1] "6 jest parzyste"
## [1] "8 jest parzyste"
## [1] "10 jest parzyste"
while-> stosowany, gdy powtórzenia maja być wykonywane tak długo, jak długo prawdziwy jest podany warunek
Wyświetl liczby od 1 do 5
i <- 1
while (i <= 5) {
print(i)
i <- i + 1
}## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
Losuj liczby do momentu trafienia 7
number <- 0
while (number != 7) {
number <- sample(1:10, 1)
print(paste("Wylosowano:", number))
}## [1] "Wylosowano: 4"
## [1] "Wylosowano: 1"
## [1] "Wylosowano: 9"
## [1] "Wylosowano: 10"
## [1] "Wylosowano: 7"
print("Trafiono 7!")## [1] "Trafiono 7!"
liczba<-7
while (liczba>0){
cat(paste("liczba= ", liczba, "\n"))
liczba<-liczba-2
}## liczba= 7
## liczba= 5
## liczba= 3
## liczba= 1
i <- 1
while (i < 6) {
print(i)
i = i+1
}## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
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
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
}Wyświetl liczby od 1 do 5 omijając liczbę 3
number = 1
while(number <= 5) {
if (number == 3) {
number = number + 1
# 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
Bez argumentu
hello <- function() {
print("Witaj w świecie R!")
}
hello()## [1] "Witaj w świecie R!"
Funkcja z argumentem
greet <- function(name) {
paste("Cześć,", name, "!")
}
greet("Agata")## [1] "Cześć, Agata !"
Funkcja zwracająca wartość działania
square <- function(x) {
return(x^2)
}
square(5)## [1] 25
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
Funkcja z warunkiem
check_number <- function(x) {
if (x > 0) {
return("dodatnia")
} else if (x < 0) {
return("ujemna")
} else {
return("zero")
}
}
check_number(-5)## [1] "ujemna"
Funkcja z pętlą i warunkiem (ile jest liczb parzystych? )
count_even <- function(vec) {
count <- 0
for (v in vec) {
if (v %% 2 == 0) {
count <- count + 1
}
}
return(count)
}
numbers <- c(1, 2, 3, 4, 5, 6, 7)
count_even(numbers)## [1] 3
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
}Napisz pętlę for, która wypisze liczby od 1 do 10 oraz informację, czy są parzyste czy nie.
for (i in 1:10) {
if (i %% 2 == 0) {
print(paste(i, "jest parzyste"))
} else {
print(paste(i, "jest nieparzyste"))
}
}Napisz pętlę while, która będzie losować liczby z zakresu 1–6, aż wypadnie 6.
dice <- 0
count <- 0
while (dice != 6) {
dice <- sample(1:6, 1)
count <- count + 1
print(paste("Rzut:", dice))
}
print(paste("Liczba rzutów:", count))Utwórz funkcję square_plus_one(x), która zwraca wartość x^2 + 1.
square_plus_one <- function(x) {
return(x^2 + 1)
}
square_plus_one(4)Napisz funkcję describe_number(x), która wypisze, czy liczba jest dodatnia, ujemna, czy równa zero.
describe_number <- function(x) {
if (x > 0) {
return("dodatnia")
} else if (x < 0) {
return("ujemna")
} else {
return("zero")
}
}
describe_number(-10)Napisz funkcję sum_positive(vec), która zwraca sumę tylko dodatnich wartości wektora.
sum_positive <- function(vec) {
suma <- 0
for (v in vec) {
if (v > 0) {
suma <- suma + v
}
}
return(suma)
}
sum_positive(c(-3, 2, 5, -1, 4))## [1] 11
Napisz funkcję avg_even(vec), która oblicza średnią z liczb parzystych w wektorze.
avg_even <- function(vec) {
even <- vec[vec %% 2 == 0]
return(mean(even))
}
avg_even(c(1, 2, 3, 4, 5, 6))## [1] 4
Napisz funkcję simulate_game(), która losuje liczby z zakresu 1–10 aż wypadnie 10 i zwraca liczbę prób potrzebnych do trafienia.
simulate_game <- function() {
count <- 0
number <- 0
while (number != 10) {
number <- sample(1:10, 1)
count <- count + 1
}
return(count)
}
simulate_game()## [1] 4