******************* PROGRAMIRANJE ********************************* https://www.programiz.com/r-programming/#tutorial ce so stavki v isti vrstici jih locimo s podpicjem sestavljen stavek naredimo z { } IF ------------------- pri if stavku je pogoj obvezno v okroglem oklepaju: if (pogoj) {stavki} if (pogoj) {stavki1} else {stavki2} 'else' mora biti v isti vrstici kot zadnji zaklepaj stavka if a<-5 b<-4 if (a>3) b <- 10 if - else if (a>3) b <- 10 else b <- pi if (a>3) {b <- 10; c <-11} else {b <- pi; c <-22} ali if (a>3) {b <- 10 c <-11 } else {b <- pi c <-22 } ZANKE ------------------- Primer: zgradi seznam z vrednostmi kvadratov stevil 1..20 While: i <- 1; s <- NULL; while (i<=20) {s <- c(s,i^2); i <- i+1 } For: s <- NULL; for (i in 1:20) {s <- c(s,i^2);} Repeat: (neskoncna zanka, zato jo pri nekem pogoju nasilno prekinemo) i <- 1; s <- NULL; repeat{s <- c(s,i^2); i <- i+1; if (i>20) break } ****************************************************************** Izracunaj vsoto za podan n: 1 1 1 1 1 v(n)= 4 * (1 - --- + --- - --- + --- ..... +- -------) 3 5 7 9 2n-1 1 2 3 4 5 v <- function(n) { s <- 0 for (i in 1:n) if (i %% 2 == 0) s <- s - 1/(2*i-1) else s <- s+ 1/(2*i-1) 4*s } --------------------------------------------- Primer: funkcija, ki izracuna fakulteto podanega stevila: fakulteta <- function(n) { if (n == 0) f <- 1 else { f <- 1 for (i in 1:n) f <- f*i } f } ------------------------------------------------ Izracunaj naslednjo vsoto, z uporabo ze napisane funkcije 'fakulteta'! 1 1 1 1 Vsota = --- + --- + --- + ... + --- 0! 1! 2! n! vsota <- function(n) { v <- 0 for (i in 0:n) v <- v + 1/fakulteta(i) v } --------------------------- Rekurzivne funkcije (funkcije, ki klicejo samo sebe) 0! = 1 n! = n*(n-1)! fakul <- function(n) { if (n == 0) f <- 1 else f <- n*fakul(n-1) f } -------------------------------------- fib(1)=1 fib(2)=1 fib(n)=fib(n-1) + fib(n-2) z rekurzijo: fib <- function(n) { if ((n == 1) | (n == 2)) f <- 1 else f <- fib(n-1) + fib(n-2) f } brez rekurzije: fib1 <- function(n) { f1<-1 f2<-1 for (i in 3:n) { f3 <- f1+f2 f1 <- f2 f2 <- f3 } f2 } -------------------------------- Izracunaj produkt (priblizek za stevilo pi) 1 x(n) = ------------------------------- * 2 3 15 35 4n^2-1 - * -- * -- * .. .* ------ 4 16 36 4n^2 ----------------------------------------------- Izpis na ekran: Izpisi stevila 1 do 10 na ekran for (i in 1:10) cat(i) - drzi se vse skupaj for (i in 1:10) cat(i,' ') - s presledkom vmes for (i in 1:10) cat(i,'\t') - s tabulatorjem vmes for (i in 1:10) cat(i,sep='\n') - vsak v novi vrsti ali for (i in 1:10) cat(i,'\n') - vsak v novi vrsti Razlika med cat in print: print sam izpise v novo vrstico for (i in 1:10) print(i) ----------------------------------------------- Branje z ekrana: ime <- readline(prompt="Vnesi ime: ") print(paste("Pozdravljen",ime)) print(paste("Pozdravljen",ime),quote=FALSE) print(paste0("Pozdravljen ",ime)) ?paste