******************* Branje in pisanje na/z datotek ***************************** Branje tekstovne datoteke s stevili(poddirektorije locimo z znakom /): v1<-scan('test1.vec', skip=1) - preskoci eno vrstico, ki je ime spremenljivke Pisanje na datoteko write(v1,'test2.vec') ce zelimo vsako stevilo izpisati v svojo vrstico write(v1,'test2.vec', ncolumns=1) ********************* Risanje - en vektor ************************************ plot(v1) - x os je indeks stevila, y pa stevilo hist(v1) hist(v1,col="Blue") hist(v1,col="Blue", border="Red") hist(v1,col="Blue", border="Red",labels=TRUE) hist(v1, nclass=3) ali hist(v1, br=3) z ukazom summary(v1) zvemo, da so podatki cela stevila z intervala 3 do 25, zato lahko zahtevamo stolpec za vsako stevilo posebej (stolpcev toliko kot stevil) hist(v1,br=0:25,col="Yellow") Barvanje posameznih stolpcev: hist(v1,br=0:25,col=rainbow(26)) hist(v1,br=0:25,col=heat.colors(26)) hist(v1,br=0:25,col=terrain.colors(26)) hist(v1,br=0:25,col=cm.colors(26)) ****************** Matrike ************************************************ Resevanje sistema linearnih enacb (matrika ne sme biti singularna) 2x + y + 3z = 9 x - 2y + z= -2 3x + 2y + 2z = 7 oziroma: Ax=y, x=? A <- matrix(c(2,1,3,1,-2,2,3,1,2),3) (podamo le stevilo vrstic, iz cesar je stevilo stolpcev doloceno) Ali A <- array(c(2,1,3,1,-2,2,3,1,2),dim=c(3,3)) Pojasnilo array je posplositev matrike: matrika je 2-dimenzionalna y <- c(9,-2,7) x <- solve(A,y) Rezultat je vektor x=(-1,2,3) Preverimo z A%*%x (vektorski produkt) Izlocanje dela matrike: A[2,] - izloci drugo vrstico A[,2] - izloci drugi stolpec A[2,3] - vrne element v 2 vrstici in tretjem stolpcu A[-2,-3] - iz matrike odstrani drugo vrstico in tretji stolpec t(A) - transponiranje matrike det(A) - determinanta matrike ------------------------------------------ m <- matrix(c(2,3,1,2,4,5),2) rezultat [,1] [,2] [,3] [1,] 2 1 4 [2,] 3 2 5 ------------------------------------------ A <- matrix(c(4,2,1,3,2,2,3,4,5),3) B <- matrix(c(2,3,1,2,1,1,3,2,1),3) A * B - produkt po komponentah A %*% B - obicajen produkt matrik problem lastnih vrenosti/vektorjev: Ax = lambda x x<-eigen(A) - problem lastnih vred.-vekt., rezultat = seznam x$val - vektor lastnih vrednosti prva lastna vrednost je x$val[1] x$vec - matrika lastnih vektorjev prvi lastni vektor je x$vec[,1] Preverimo enakost: A %*% x$vec[,1] x$val[1] * x$vec[,1] ************************ branje datoteke z vec stolpci ***************************** V datoteki pod1.txt so podatki o 5 stanovanjih x <- read.table("pod1.txt",header=TRUE) rezultat je mnozica poimenovanih vektorjev (data.frame) zdruzenih v spremenljivki x, npr x x$Area x$Area[5] mean(x$Area) x$Price/x$Area - cena na kv.meter summary(x) risanje pairs(x) narise sliko korelacijskih grafikonov vseh parov zapis nazaj na datoteko write.table(x,"pod2.txt") ************************ branje datoteke iz Excela ***************************** V Excelu tabelo shranimo kot CSV (Comma-Separated Values) format: File/Save as CSV (Comma Delimited) Posamezni podatki so v tem primeru (velja za slovenske nastavitve) loceni s podpicjem (in ne vejico) zato namesto ukaza read.csv uporabimo ukaz read.csv2. x<-read.csv2("aaa.csv", header=TRUE) Obstaja sicer tudi osnovni ukaz: x<-read.csv("aaa.csv", header=TRUE) ki pa za locilo uporablja vejico in za decimalno locilo piko (ameriski nacin), zato datoteko aaa.csv narobe prebere. Locilo med podatki (podpicje) in decimalno locilo (vejico) lahko sicer sami dolocimo: x<-read.csv("aaa.csv", sep=";", header=TRUE, dec=",") Podatke v Ru shranimo nazaj na datoteko CSV, ki jo lahko preberemo z Excelom: Spet uporabimo ukaz write.csv2 namesto write.csv: write.csv2(x,"bbb.csv") ali (brez dodanih imen vrstic): write.csv2(x,"bbb1.csv", row.names = FALSE) ********************************************************************************