#racunanje izraza 2+2 5*6 2+6/3 #operator dodele: <- ili = x<-5 x1=5 #ispis vrednosti x x1 #komentari se pisu pod znakom # #nazivi promenljivih moraju da pocnu slovom #R je case sensitive (razlikuje mala i velika slova) #opis ugradjenih funkcija: help(ime_funkcije) #string promenljive z<-"ovo je string promenljiva" #logicki operatori: <=, >=, ==, !=, <, >, &, |, ! (daju kao rezultat T ili F) 3<4 #VEKTORI: #indeksiranje pocinje od 1 v<-c(1,2,3,4,5) v v1<-1:5 v1 v2<-seq(1,5,1) v2 v3<-seq(5,1,-1) v3 #pristup elementima vektora i menjanje pojedinih vrednosti v2[3] v2[3]<-7 v2 #dodavanje elementa na kraj v2[6]<-7 v2 #vektor bez jednog elementa v[-5] #izdvajanje podniza i podvektora v2[1:3] v3[c(1,2)] #skalarne operacije primenjene na vektor se primenjuju na svakom elementu pojedinacno # : ima veci priotiret od aritmetickih operacije v<-1:5-1 v1<-1:(5-1) v v1 #najcesce operacije sa vektorima: length(v), max(v), min(v), range(v), sort(v), order(v), sum(v), mean(v), var(v), sd(v) #kopiranje vektora rep(v) rep(v,5) #novi vektor koji sadrzi 5 nadovezanih kopija pocetnog rep(v,each=5) #kopira svaki element 3 puta uzastopno rep(v,length.out=3) #kopira prva tri elementa #mogu se definisati sting vektori, kao i logicki vektori #ako vektor ima NA vrednosti one se mogu ignorisati u konkretnoj funkciji v<-c(1,2,NA,5,7) mean(v,na.rm=T) #MATRICE: M<-1:10 dim(M)<-c(2,5) M m<-matrix(1:10, nrow=2) m1<-matrix(1:10,ncol=5) #dodeljivanje imena kolonama i vrstama matrice: colnames i rownames #povezivanje vektora u matrice: cbind i rbind #pristupanje elementima matrice: M[1,2] #pristupanje celoj vrsti/koloni: M[2,] M[,4] #operacije: t(M) #transponovanje diag(M) #elementi dijagonale # det(M) determinanta # solve(x) inverzna matrica M*m #mnozenje elemenata sa istim indeksom M%*%t(m) #matricno mnozenje #FAKTORI: #koriste se kod kategorijskih promenljivih: pol - muski i zenski, obrazovanje - osnovno, srednje, vise, visoko,... pol<-c(0,0,1,0,1) fpol<-factor(pol,levels=0:1) #komanda kojom kazemo da pol posmatramo kao faktor, sa vrednostima 0 i 1 fpol levels(fpol)<-c("muski","zenski") #dodeljujemo znacenje fpol levels(fpol) #LISTE: #kolekcije vise objekata lista<-list(v1,v2) lista #pristupanje elementima liste: lista[[2]] #mogu da se dodele imena elementima lista<-list(prvi=v1,drugi=M) lista[[2]] lista[["drugi"]] lista$drugi names(lista) #imena objekata #dodavanje novog element lista[[3]]<-"treci" #brisanje elemenata lista[-3] lista #BAZE PODATAKA: #Baze podataka (data frames) su liste sa vektorima iste duzine slova<-c("A", "B", "C", "D") brojevi<-1:4 df<-data.frame(slova,brojevi) df #pristup elementima baze df$brojevi df$slova d<-data.frame(br=brojevi,sl=slova) #dodeljivanje imana promenljivim d$sl d$br #za pozivanje pojedinih elemenata koristi se ista notacija kao kod matrica attach(d) #nakon ove funkcije promenljivim se pristupa bez navođenja imena baze sl detach(d) #ponistavanje prethodne funkcije #GRAFICI plot(v,v3,xlim=c(0,10),ylim=c(0,10),main="Main title",sub="subtitle",xlab="x-osa",ylab="y-osa") #dodavanje tacaka: points(0.5,0.5)#zadajemo koordinate tacke (tacaka) koje dodajemo #dodavanje teksta: text(0.6,0.6,"ubaceni tekst")#zadajemo koordinate i tekst koji se ispisuje #ubacivanje linije: abline(6,-1) abline(h=1) abline(v=1) #ako hocemo da grafik bude veoma slozen, mozemo na docetku izostaviti sve elemente i posle ih pojedinacno dodati: plot(v,v3,type="n",xlab="",ylab="",axes=F)#ne crta ose, ne obelezava ih, type="n" znaci da se tacke izostavljaju points(v,v3) #dodaje sve tacke na grafik axis(1) #dodaje prvu osu axis(2) #dodaje drugu ali je obelezava na mestima naznacenim vektorom seq(..) box() #dodaje okvir title(main="Glavni naslov",sub="podnaslov",xlab="x-osa",ylab="y-osa") par() #parametri grafickog prikaza, koji se mogu menjati, npr par(col="red") plot(v,v3) #kombinovanje grafika x<-rnorm(100) hist(x,freq=F) curve(dnorm(x),add=T) #PRIMER PISANJA FUNKCIJA: binomni<-function(n,k){ koef<-factorial(n)/(factorial(k)*factorial(n-k)) return(koef) } binomni(4,2) #UCITAVANJE I CUVANJE: #ucitavanje tabele kao baze: read.table("putanja/ime_fajla.txt",header=T) #header=T znaci da prvu vrstu ne posmatra kao podatke nego kao imena promenljivih baza<-read.table("C:/Users/Marija/Desktop/LSM/uvod/baza.txt",header=T) head(baza) #ako su separatori zarezi: read.csv("putanja/ime_fajla.txt",header=T) #ako je separator tab: read.delim("putanja/ime_fajla.txt",header=T) #pisanje tabele/baze podataka u fajl: write.table(data,fajl,sep="\t") #data je tipa data.frame ili matrica, ako nije automatski ce se konvertovati write.table(baza,"C:/Users/Marija/Desktop/LSM/uvod/baza1.txt",sep="\t")