Definicija funkcije f1 <- function(x){x^2 + x + 3} - funkciji smo dali ime f1 - x je vhodni (formalni) parameter - funkcijo zapisemo med zavitimi oklepaji (Pascal begin - end) - zadnji stavek v funkciji (v nasem primeru je le en stavek) je rezultat, ki ga funkcija vrne klic f1(5) ali y <- f1(5) --------------- Risanje funkcij curve(x^2 + x + 3) ali curve(f1) curve(f1,-10,10) curve(f1,col='red') ------------------------ Barve v R-u podamo z imeni: http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf ali z mesanico rdece, zelene in modre barve, v sestnajstiskem zapisu, npr. "#RRGGBB" curve(f1,-10,10,col="#0000FF") ------------------------ f2 <- function(x){2*x^2 - x - 4} curve(f2,-10,10,col="blue",add=TRUE) ------------------------ gostota normalne porazdelitve p<- function(x){1/(sqrt(2*pi))*exp(-x^2/2)} curve(p,-3,3) dodatki (labele): curve(p,-3,3,main='Gostota normalne porazdelitve', xlab='x', ylab='y') curve(p,-3,3,main='Gostota normalne porazdelitve', xlab='x', ylab='y', ylim=0:1) ------------------------------------ Stevilne dodatne parametre nastavimo z ukazom par ?par npr, za rumeno ozadje par(bg="yellow") debelejse crte par(lwd=3) duseno nihanje f3 <- function(x){exp(-0.5*x) * sin(5*x)} curve(f3,0,10) f4 <- function(x){exp(-0.5*x)} curve(f4,add=TRUE,col="red") f5 <- function(x){-exp(-0.5*x)} curve(f5,add=TRUE, col="cyan") --------------------------------- f6 <- function(x){x^4 - 14*x^3 + 60*x^2 - 70*x } curve(f6,0,7) --------------------------------- Naloga narisi funkcije x^2, x^4 in x^6 v isti sliki na intervalu -2 do 2, z razlicnimi barvami. ------------- Zapis slike v datoteko PS (latex), PDF (latex) ali WMF (Word): z misko kliknemo na sliko, ali odtipkamo izpis v pdf datoteko pdf(file="test.pdf") curve(f4,1,6) dev.off() izpis v ps datoteko postscript("testps.ps") curve(f4,1,6) dev.off() enako win.metafile, ------------- Funkcije vec spremenljivk funabc<- function(a,b,c){a*b+c} klic funabc(2,3,4) ---------------------------- definicija infiksne funkcija (operator na sredini) a+2*b "%f%" <- function(a,b) {a+2*b} klic 5 %f% 2 --------------- vgrajeni funkciji mod in div 10 %% 3 mod 10 %/% 3 div ******************* Zaporedja in vektorji *************************** i <- 1:10 seq(-5, 5, by=.2) -> s3 Rezultat: s3 (-5.0, -4.8, -4.6, ..., 4.6, 4.8, 5.0). seq(-5, by=.23, length=10) -> s3 Rezultat: s3 (-5.00 -4.77 -4.54 -4.31 -4.08 -3.85 -3.62 -3.39 -3.16 -2.93). kot bomo videli kasneje je to v bistvu vektor Pomoc ?seq Primer: Pretvorba celzija v fahrenheita c <- 20:30 f <- 9/5*c+32 pretvorba <- data.frame(c, f) c f 1 20 68.0 2 21 69.8 3 22 71.6 4 23 73.4 5 24 75.2 6 25 77.0 7 26 78.8 8 27 80.6 9 28 82.4 10 29 84.2 11 30 86.0 Data frame je mnozica spremenljivk (vektorjev) z enako dolzino. V nasem primeru sta to vektorja c in f, do katerih dostopamo z $: pretvorba$c pretvorba$f ************************************************************************* Naloga: za denarne vrednosti od 0 EUR do 3 EUR s korakom 0.25 EUR izracunaj in izpisi ustrezne vrednosti v SIT. ********************** Vektorji ***************************************** Razlika med vektorjem in seznamom: v vektorju so vse komponente istega tipa (ponavadi stevilskega), v seznamu (list) pa lahko tudi razlicnega Operacija c - concatenate, stikanje, iz vec stevil naredi vektor Primer: x<- c(3,6,-2,7,pi) -------------------- Izlocanje podvektorja x[2] - vrne drugi element x[c(2,4)] - vrne 2. in 4. element x[c(2:4)] - vrne 2, 3, in 4. element x[-c(2,3)] - minus pomeni, da te elemente izlocimo sort(x) - sortiranje vektorja rev(x) - obrne vektor (zadnji element bo prvi) V R-u so pomembne vektorske operacije: operacija se izvede nad celim vektorjem naenkrat x^2 sum(x) length(x) sum(x)/length(x) mean(x) summary(x) Vektorja enakih dolzin x in y x+y x*y -------------------------------- Naloga: izracunaj vsoto: 1 1 1 1 1 4 * (1 - --- + --- - --- + --- ..... +- -------) 3 5 7 9 99999 s pomocjo vektorjev.