Zdroj: https://physics.ujep.cz/~jskvor/ZZD/ZZD-cv2.html
rm(list=ls())
library(dplyr)
library(DescTools)
Definujte funkci fibonacci, která bude mít jeden vstupní parametr. Tento parametr bude udávat počet členů Fibonacciho posloupnosti, které budou vráceny na výstupu. Fibonacciho posloupnost je definována rekurentním vztahem xi=xi−1+xi−2, kde x1=0 a x2=1
fibonacci <- function(n){
x1 <- 0
x2 <- 1
i <- 0
if (n > 2){
while(i < n){
x <- x1 + x2
x1 <- x2
x2 <- x
i <- i + 1
}
}
return(x)
}
fibonacci(6)
[1] 13
Definujte funkci pro řešení kořenů kvadratické rovnice ax2+bx+c=0 Parametry a, b a c budou zadány jako vstupy funkce. Na základě hodnoty diskriminantu rozhodněte, jaká řešení rovnice má. Funkce vždy vrátí vektor dvou hodnot
kvadrkor <- function(a,b,c){
disc <- b*b-4*a*c
if(disc < 0){
x1 <- "na"
x2 <- "na"
}else if(disc == 0){
x1 <- (-b)/2*a
x2 <- x1
}else{
x1 <- ((-b) + sqrt(disc)) / 2*a
x2 <- ((-b) - sqrt(disc)) / 2*a
}
return(c(x1,x2))
}
kvadrkor(2,-63,8)
[1] 125.4899992 0.5100008
Využijte vestavěnou tabulku iris a zkontrolujte její strukturu. Jaký je počet řádků a sloupců? Jaké obsahuje datové typy?
str(iris)
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
head(iris)
colnames(iris)[2]
[1] "Sepal.Width"
for(i in 1:4){
print(colnames(iris)[i])
print(mean(iris[,i]))
print(sd(iris[,i]))
print("")
}
[1] "Sepal.Length"
[1] 5.843333
[1] 0.8280661
[1] ""
[1] "Sepal.Width"
[1] 3.057333
[1] 0.4358663
[1] ""
[1] "Petal.Length"
[1] 3.758
[1] 1.765298
[1] ""
[1] "Petal.Width"
[1] 1.199333
[1] 0.7622377
[1] ""
summary(iris$Species)
setosa versicolor virginica
50 50 50
Načtení tabulky z HTML
Získejte seznam všech tabulek z webu https://ki.ujep.cz/cs/historie/. Z druhé tabulky zkuste pomocí indexace logickou hodnotou vybrat řádky, pro které je hodnota ve sloupci “Dosud na UJEP” rovna textu “ANO”. Výsledek přidejte do seznamu jako novou tabulku.
Všechny tři tabulky uložte do xlsx dokumentu jako oddělené listy.
library(rvest)
URL <- "https://ki.ujep.cz/cs/historie/"
tables <- html_table(read_html(URL))
table2 <- data.frame(tables[2])
summary(table2)
X1 X2 X3 X4
Length:10 Length:10 Length:10 Length:10
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
str(table2)
'data.frame': 10 obs. of 4 variables:
$ X1: chr "Jméno" "Doc. RNDr. Jan Kopka, CSc." "Ing. Zdeněk Fikar" "Ing. Mgr. Jiří Barilla" ...
$ X2: chr "Od" "1987" "1991" "1993" ...
$ X3: chr "Do" "1991" "1993" "1996" ...
$ X4: chr "Dosud na UJEP?" "NE" "NE" "ANO" ...
print(table2[1,])
colnames(table2) <- table2[1,]
table2 <- table2[-1,]
print(table2)
table3 <- table2[table2$`Dosud na UJEP?`=="ANO",]
install.packages("writexl")
library(writexl)
file_path <- "output.xlsx"
tbls_lst <- list(table, table2, table3)
for (i in seq_along(tbls_lst)){
write_xlsx(tbls_lst[i], path = file_path, sheet = paste0("Table_", i))
}