###################################### ### PETI CAS - PROGRAMIRANJE U R-U ### ###################################### # Definisanje funkcije IME_FJE<-function(arg1,arg2,arg3,...) {TELO FUNKCIJE} # Poziv f-je IME_FJE(arg1,arg2,...) sa konkretnim argumentima # Ako zelimo da vidimo kod postojecih f-ja, kucamo samo ime bez argumenata factorial # Primer f-je koja vraca binomni koeficijent - n nad k binomni<-function(n,k){ koef<-factorial(n)/(factorial(k)*factorial(n-k)) return(koef) } # Poziv binomni(4,2) # F-ja koja spaja dva vektora kao kolone matrice spoji<-function(v1,v2){ return (cbind(v1,v2)) } # Poziv spoji(c(0,1,2,3),seq(0,3,1)) # Kad pozivamo f-ju, argumente navodimo istim redom kao u definiciji f-je, osim ako ih navedemo po imenu,onda moze proizvoljno. binomni(k=2,n=4) # Funkcija ne mora da sadrzi RETURN naredbu,samo da napravi neke izmene, medjutim one vaze samo u telu f-je # Npr. f-ja koja racuna kvadrat broja SQ<-function(x){ x<-x^2 } a<-3 SQ(a) a # nije se izmenilo van funkcije # ali ako kazemo a<-SQ(a) a #ZADATAK: Napisati funkciju koja crta dva grafika y(x) i x(y) u proizvoljnoj boji colors() #sve postojece boje u R-u crtaj<-function(v1,v2){ par(mfrow=c(1,2),col="turquoise") plot(v1,v2) plot(v2,v1) par(mfrow=c(1,1),col="black") } # Da bismo isprobali rad f-je pravimo dva vektora, koji predstavljaju uzorke iz U[0,1] odnosno N(0,1) raspodele: x<-sample(1:1000,100) y<-sample(1:1000,100) crtaj(x,y) # FOR, WHILE, REPEAT i IF naredbe: # Bilo koja celina - blok naredbi, moze se izdvojiti {} zagradama # ako u konzoli predjemo u novi red a traje blok, on ce staviti + da oznaci to # IF naredba: #if(logicki_izraz) naredbe koje se izvrsavaju #ili if(logicki_izraz) naredbe else naredbe if(a>3) a<-a-3 else a<-0 a a<-2 b<-3 c<-4 if(a=5) break } y # ZADATAK: Napisati f-ju koja racuna faktorijel pomocu for, while ili repeat # pomocu while petlje: fact<-function(n){ f<-1 while(n>1){ f<-f*n n<-n-1 } return (f) } # Vratimo se na bazu sleep data(sleep) sleep #ZADATAK: F-ja kojom se brisu elementi iz baze kod kojih je parametar extra manji od zadatog broja brisi<-function(x){ return (sleep[sleep$extra>=x,]) } # Ako hocemo da f-ja vrati vise stvari, na primer hocemo kao prethodno, ali i da vraca broj obrisanih # Vracamo dve stavke razlicitog tipa, pa moramo da napravimo listu brisi1<-function(x){ return (list(sleep[sleep$extra>=x,],nrow(sleep[sleep$extra