Deklaracija promenljive

Operator dodele u R-u je <- (ali može da se koristi i =)

x <- 9    

Za pokretanje linije koda (ako koristite RStudio): Ctrl+Enter
Postoji i operator -> za dodelu sa druge strane

9 -> x

Numeričke vrednosti su podrazumevano tipa double ( na primer 5/2 nije celobrojno deljenje već je jednako 2.5 )

Elementarne funkcije: exp(), cos(), sin(), log(), ..

Aritmetički operatori: +,-,*,/

Logički operatori: <=,>=, ==, !=, <,>, & , |, !

Vektori

U R-u postoji mnoštvo funkcija za rad sa vektorima tako da je poželjno podatke čuvati u vidu vektora (ili matrica).

Neki od načina zadavanja vektora:

numeric.vec <- c(1, 10, 49)
character.vec <- c("a", "b", "c")
boolean.vec <- c(TRUE, FALSE)

vec <- rep(0, 10)
vec <- rep(c(1, 2, 3), 3)

vec <- seq(1, 5)
vec <- seq(0, 1, 0.1)
vec <- seq(9, 1, -1)
vec <- seq(1, 5, length.out = 4)

vec <- 1:9

for petlja

vec <- numeric(10)

for (i in 1:10) {
vec[i] <- i ^ 2

}

Operacije sa vektorima

a <- 1:5
b <- c(3, 4, 5, 6, 7)

Aritmetičke operacije

5 * a
## [1]  5 10 15 20 25
a + b
## [1]  4  6  8 10 12
a - b
## [1] -2 -2 -2 -2 -2
a * b
## [1]  3  8 15 24 35
a / b
## [1] 0.3333333 0.5000000 0.6000000 0.6666667 0.7142857

Logičke operacije

a == b
## [1] FALSE FALSE FALSE FALSE FALSE
a > b
## [1] FALSE FALSE FALSE FALSE FALSE
a <= 5
## [1] TRUE TRUE TRUE TRUE TRUE

Ako hoćemo da poredimo cela dva vektora:

all(a == b)
## [1] FALSE
all(a == a)
## [1] TRUE

Ako dva vektora nisu iste dužine, vrednosti kraćeg vektora se ponavljaju ciklično dok se ne pogode iste dimenzije sa dužim vektorom.

u<-c(10, 20, 30) 
v<-c(1, 2, 3, 4, 5, 6, 7, 8, 9) 
u + v 
## [1] 11 22 33 14 25 36 17 28 39

I funkcije u R-u su vektorske (primenjuje se na svaki član vektora).

cos(a)
## [1]  0.5403023 -0.4161468 -0.9899925 -0.6536436  0.2836622
log(a)
## [1] 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379

Pristupanje elementima vektora

Indeksiranje vektora počinje od jedinice!

v[3]  # element na 3. poziciji u vektoru v
## [1] 3

Možemo da izdvojimo i neke cele vektore.

v[c(1, 2)]
## [1] 1 2
v[c(3, 4, 5)]
## [1] 3 4 5
v[2:4]
## [1] 2 3 4
v[c(2, 1, 3)]
## [1] 2 1 3
v[v < 5]
## [1] 1 2 3 4
v[v != 8]
## [1] 1 2 3 4 5 6 7 9

Ako stavimo negativan predznak indeksu rezultat je originalni vektor umanjen za clan na poziciji koja odgovara apsolutnoj vrednosti broja u zagradi.

v[-4]
## [1] 1 2 3 5 6 7 8 9
v[-c(5, 7)]
## [1] 1 2 3 4 6 8 9
v[-(1:3)]  # Napomena: ":" ima manji prioritet od aritmetičkih operacija 
## [1] 4 5 6 7 8 9

Novi vektor može se izdvojiti iz datog vektora uz pomoć vektora sa logičkim vrednostima koji je iste dužine kao originalni. Njegovi elementi su TRUE (ili T) ako odgovarajući element u orignalnom vektoru treba da bude izdvojen, odnosno FALSE (ili F) u suprotnom.

s <- c("a", "b", "c", "d")
l <- c(T, F, T, F)
s[l]
## [1] "a" "c"

Možemo da dodelimo imena članovima vektora.

v <- c("Ivo", "Andric")
names(v) <- c("Ime", "Prezime")
v
##      Ime  Prezime 
##    "Ivo" "Andric"

Zatim možemo da pristupimo elementima po imenu.

v["Ime"]
##   Ime 
## "Ivo"

Neke funkcije nad vektorima:

vec <- rev(vec) # obrće redosled članova vektora
length(vec)
## [1] 10

Važne statistike

sum(vec)   # zbir 
## [1] 385
min(vec)   # x_(1)
## [1] 1
max(vec)   # x_(n)
## [1] 100
range(vec) # x_(1) , x_(n)
## [1]   1 100
mean(vec)  # uzoračka sredina 
## [1] 38.5
var(vec)   # popravljena uzoračka disperzija
## [1] 1167.833
sd(vec)    # standardno odstupanje (sqrt(var(x)))
## [1] 34.17358

Sortiranje

sort(vec)
##  [1]   1   4   9  16  25  36  49  64  81 100
sort(vec, decreasing = TRUE)
##  [1] 100  81  64  49  36  25  16   9   4   1

Izmene u vektoru

vec[2] <- 0
vec[vec < 5] <- 1
vec <- vec[1:4]

Matrice

M <- matrix( 
    c(2, 4, 3, 1, 5, 7), 
    nrow=2,              
    ncol=3,              
    byrow = TRUE)   # popunjavamo matrice po redovima (po default-u je po kolonama)
M[2,3]      
## [1] 7
M[2,]       # drugi red
## [1] 1 5 7
M[,3]       # treća kolona 
## [1] 3 7
M[, c(1,2)] 
##      [,1] [,2]
## [1,]    2    4
## [2,]    1    5

Funkcije

Sintaksa za pisanje funkcija

# func.name<- function (argument) {
  
#         statement
# }

Reč function je rezervisana za deklaraciju funkcije.
Izrazi u okviru vitičastih zagrada čine telo funkcije (zagrade su opcione ako telo sadrži samo jedan izraz).
Konačno, funkcija se poziva sa func.name(argumenti).

Primeri

pow <- function(x, y) {
  
  result <- x^y

  print(paste(x,"na stepen", y, "je", result))

  }

Ako želimo da funkcija vrati neki rezultat:

pow2 <- function(x, y) {
  
  result <- x^y
  
  result  #  return(result)
  
}

Pozivanje funkcije

pow(2,3)
## [1] "2 na stepen 3 je 8"
pow2(2,3)
## [1] 8

Ili..

pow(x = 2, y = 3)
## [1] "2 na stepen 3 je 8"
pow(y = 3, x = 2)  #nije bitan redosled argumenata u ovom slučaju
## [1] "2 na stepen 3 je 8"

if/else

x <- 5
if (x %% 2 == 0) {
print("x je paran")
} else
print("x je neparan")
## [1] "x je neparan"

Može i u jednom redu:

ifelse(x %% 2 == 0, print("x je paran"), print("x je neparan"))
## [1] "x je neparan"
## [1] "x je neparan"

Liste

Lista je generički vektor koji sadrži druge objekte.

n <- c(2, 3, 5)
s <- c("aa", "bb", "cc", "dd", "ee")
b <- c(TRUE, FALSE, TRUE, FALSE, FALSE)
lst <- list(n, s, b)   # lst sadrzi  kopije od n, s, b

lst[1] #niz n
## [[1]]
## [1] 2 3 5
lst[2] #niz s
## [[1]]
## [1] "aa" "bb" "cc" "dd" "ee"

Na ovaj način dobijamo kopije prvog, odnosno drugog člana liste. Međutim ako hoćemo da direktno pristupimo članu liste koristimo [[ ]].

lst[[1]]   
## [1] 2 3 5

Tada možemo da menjamo sadržaj liste.

lst[[2]]<-c("a","b")
lst[[2]][1]<-"c"

Grafičko prikazivanje podataka

plot()

paketi: ggplot2,plotly

cars <- c(1, 3, 6, 4, 9)
trucks <- c(2, 5, 4, 5, 12)
plot(cars, type = "o", col= "blue", ylim = c(0,12))
lines(trucks, type = "o", pch = 22, lty = 2, col = "red")
title(main = "Auto", col.main = "pink", font.main = 4)

x <- sin(1:10)
y <- log(1:10)

plot(x,y)

Slučajnost u R-u (pseudo-slučajnost)

Funkcija sample()
U svom najjednostavnijem obliku, funkcija sample permutuje zadati niz na slučajan način

x <- 1:10
sample(x)
##  [1]  9  7  4  3 10  6  5  1  2  8
sample(10)  # je poziv ekvivalentan prethodnom 
##  [1]  8 10  9  6  3  5  7  2  4  1

Ova funkcija ima argument replace čija je vrednost podrazumevano FALSE, što znači da se simulira slučajno biranje brojeva bez ponavljanja.
Ako prosledimo vrednost TRUE funkcija vraća slučajan uzorak sa ponavljanjem.
Još jedan argument je prob (odnosno probability) i on je podrazumevano NULL, a možemo da zadamo neke težine (verovatnoće) elementima skupa.
Argument size određuje koliko elemenata biramo iz prosleđenog vektora. Napomena: Zbog gore pomenuta dva načina zadavanja moze da dođe do zabune prilikom sledećih izraza

sample(x[x > 8])  #izlaz: vektor dužine 2
## [1] 10  9
sample(x[x > 9])  #izlaz: vektor dužine 10
##  [1]  7  2  8  3  6  9  4  1 10  5

Hoćemo da simuliramo bacanje novčića:

coin <- c("Heads", "Tails")
sample(coin, size = 1)
## [1] "Heads"

Sada želimo 100 simulacija ovog slučajnog eksperimenta:

#sample(coin, size = 100)

Javlja grešku. Treba da promenimo vrednost argumenta replace.

sample(coin, size = 1000, replace = TRUE)
##    [1] "Heads" "Heads" "Tails" "Tails" "Heads" "Heads" "Tails" "Tails"
##    [9] "Tails" "Tails" "Heads" "Heads" "Heads" "Tails" "Tails" "Heads"
##   [17] "Tails" "Heads" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails"
##   [25] "Heads" "Heads" "Tails" "Tails" "Heads" "Tails" "Heads" "Tails"
##   [33] "Heads" "Tails" "Heads" "Tails" "Heads" "Heads" "Tails" "Heads"
##   [41] "Tails" "Heads" "Heads" "Heads" "Tails" "Tails" "Tails" "Tails"
##   [49] "Heads" "Heads" "Tails" "Tails" "Heads" "Heads" "Heads" "Tails"
##   [57] "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Tails" "Heads"
##   [65] "Tails" "Heads" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails"
##   [73] "Tails" "Heads" "Heads" "Heads" "Heads" "Heads" "Heads" "Tails"
##   [81] "Heads" "Tails" "Heads" "Tails" "Tails" "Tails" "Tails" "Tails"
##   [89] "Tails" "Heads" "Tails" "Tails" "Tails" "Heads" "Heads" "Tails"
##   [97] "Tails" "Tails" "Heads" "Heads" "Tails" "Heads" "Heads" "Tails"
##  [105] "Heads" "Tails" "Heads" "Tails" "Heads" "Heads" "Heads" "Heads"
##  [113] "Heads" "Tails" "Heads" "Tails" "Heads" "Tails" "Heads" "Tails"
##  [121] "Heads" "Heads" "Heads" "Heads" "Heads" "Heads" "Heads" "Tails"
##  [129] "Tails" "Heads" "Heads" "Tails" "Tails" "Heads" "Heads" "Heads"
##  [137] "Heads" "Tails" "Heads" "Heads" "Tails" "Heads" "Heads" "Heads"
##  [145] "Heads" "Heads" "Tails" "Tails" "Heads" "Heads" "Tails" "Heads"
##  [153] "Tails" "Tails" "Heads" "Heads" "Tails" "Tails" "Tails" "Heads"
##  [161] "Heads" "Tails" "Heads" "Tails" "Tails" "Heads" "Tails" "Heads"
##  [169] "Tails" "Heads" "Heads" "Tails" "Tails" "Heads" "Tails" "Heads"
##  [177] "Tails" "Heads" "Tails" "Heads" "Tails" "Tails" "Heads" "Tails"
##  [185] "Tails" "Tails" "Tails" "Tails" "Heads" "Heads" "Heads" "Heads"
##  [193] "Tails" "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Heads"
##  [201] "Tails" "Heads" "Heads" "Tails" "Tails" "Tails" "Tails" "Heads"
##  [209] "Heads" "Heads" "Tails" "Heads" "Heads" "Tails" "Tails" "Tails"
##  [217] "Tails" "Tails" "Tails" "Heads" "Tails" "Heads" "Heads" "Tails"
##  [225] "Tails" "Tails" "Tails" "Heads" "Tails" "Heads" "Heads" "Tails"
##  [233] "Heads" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails" "Tails"
##  [241] "Heads" "Heads" "Tails" "Heads" "Tails" "Heads" "Tails" "Tails"
##  [249] "Tails" "Tails" "Tails" "Tails" "Tails" "Heads" "Heads" "Tails"
##  [257] "Heads" "Heads" "Heads" "Tails" "Heads" "Heads" "Tails" "Tails"
##  [265] "Tails" "Heads" "Tails" "Tails" "Heads" "Tails" "Heads" "Heads"
##  [273] "Heads" "Tails" "Heads" "Tails" "Heads" "Heads" "Tails" "Heads"
##  [281] "Heads" "Heads" "Heads" "Heads" "Tails" "Tails" "Heads" "Tails"
##  [289] "Heads" "Heads" "Heads" "Tails" "Tails" "Tails" "Heads" "Tails"
##  [297] "Heads" "Heads" "Heads" "Heads" "Heads" "Heads" "Heads" "Tails"
##  [305] "Heads" "Tails" "Heads" "Tails" "Tails" "Tails" "Heads" "Tails"
##  [313] "Heads" "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Heads"
##  [321] "Heads" "Heads" "Tails" "Heads" "Tails" "Heads" "Heads" "Tails"
##  [329] "Heads" "Tails" "Tails" "Tails" "Heads" "Heads" "Tails" "Heads"
##  [337] "Heads" "Heads" "Heads" "Heads" "Tails" "Tails" "Heads" "Heads"
##  [345] "Tails" "Heads" "Heads" "Heads" "Heads" "Heads" "Heads" "Heads"
##  [353] "Tails" "Tails" "Tails" "Heads" "Tails" "Tails" "Heads" "Heads"
##  [361] "Tails" "Heads" "Tails" "Tails" "Heads" "Heads" "Tails" "Heads"
##  [369] "Heads" "Tails" "Heads" "Heads" "Heads" "Tails" "Heads" "Heads"
##  [377] "Heads" "Tails" "Heads" "Tails" "Tails" "Tails" "Heads" "Tails"
##  [385] "Heads" "Heads" "Tails" "Heads" "Tails" "Heads" "Tails" "Tails"
##  [393] "Tails" "Heads" "Tails" "Tails" "Tails" "Tails" "Heads" "Heads"
##  [401] "Tails" "Tails" "Tails" "Tails" "Tails" "Heads" "Tails" "Tails"
##  [409] "Heads" "Heads" "Tails" "Heads" "Heads" "Heads" "Heads" "Tails"
##  [417] "Tails" "Tails" "Heads" "Tails" "Heads" "Tails" "Tails" "Tails"
##  [425] "Tails" "Tails" "Tails" "Tails" "Heads" "Tails" "Tails" "Tails"
##  [433] "Heads" "Heads" "Heads" "Heads" "Tails" "Tails" "Tails" "Tails"
##  [441] "Tails" "Tails" "Tails" "Tails" "Heads" "Tails" "Tails" "Tails"
##  [449] "Heads" "Tails" "Heads" "Heads" "Tails" "Tails" "Heads" "Heads"
##  [457] "Heads" "Heads" "Tails" "Tails" "Heads" "Heads" "Heads" "Heads"
##  [465] "Heads" "Heads" "Tails" "Heads" "Tails" "Heads" "Tails" "Tails"
##  [473] "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Tails" "Tails"
##  [481] "Tails" "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Tails"
##  [489] "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails" "Heads"
##  [497] "Heads" "Tails" "Heads" "Tails" "Tails" "Heads" "Tails" "Tails"
##  [505] "Heads" "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Heads"
##  [513] "Heads" "Heads" "Tails" "Heads" "Heads" "Heads" "Heads" "Tails"
##  [521] "Heads" "Tails" "Tails" "Heads" "Heads" "Tails" "Tails" "Heads"
##  [529] "Tails" "Heads" "Heads" "Heads" "Tails" "Tails" "Heads" "Tails"
##  [537] "Tails" "Tails" "Heads" "Heads" "Heads" "Heads" "Tails" "Tails"
##  [545] "Tails" "Heads" "Tails" "Tails" "Heads" "Heads" "Heads" "Tails"
##  [553] "Tails" "Heads" "Tails" "Tails" "Tails" "Heads" "Tails" "Heads"
##  [561] "Heads" "Tails" "Tails" "Tails" "Tails" "Heads" "Heads" "Tails"
##  [569] "Tails" "Tails" "Heads" "Heads" "Heads" "Tails" "Tails" "Tails"
##  [577] "Tails" "Tails" "Tails" "Heads" "Heads" "Heads" "Tails" "Tails"
##  [585] "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails" "Heads"
##  [593] "Heads" "Tails" "Tails" "Tails" "Heads" "Tails" "Tails" "Heads"
##  [601] "Tails" "Heads" "Heads" "Heads" "Heads" "Heads" "Heads" "Tails"
##  [609] "Tails" "Tails" "Heads" "Heads" "Heads" "Heads" "Tails" "Heads"
##  [617] "Heads" "Heads" "Heads" "Tails" "Heads" "Heads" "Heads" "Tails"
##  [625] "Heads" "Tails" "Heads" "Tails" "Heads" "Tails" "Heads" "Heads"
##  [633] "Tails" "Heads" "Heads" "Heads" "Heads" "Heads" "Tails" "Tails"
##  [641] "Tails" "Heads" "Tails" "Tails" "Tails" "Heads" "Tails" "Heads"
##  [649] "Heads" "Heads" "Tails" "Tails" "Tails" "Heads" "Heads" "Tails"
##  [657] "Tails" "Tails" "Heads" "Heads" "Heads" "Heads" "Tails" "Tails"
##  [665] "Heads" "Tails" "Heads" "Tails" "Tails" "Heads" "Heads" "Tails"
##  [673] "Tails" "Tails" "Tails" "Heads" "Heads" "Heads" "Tails" "Heads"
##  [681] "Heads" "Tails" "Tails" "Heads" "Heads" "Tails" "Heads" "Heads"
##  [689] "Tails" "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Tails"
##  [697] "Heads" "Heads" "Heads" "Tails" "Tails" "Heads" "Heads" "Tails"
##  [705] "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails" "Tails"
##  [713] "Tails" "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Tails"
##  [721] "Heads" "Heads" "Tails" "Tails" "Tails" "Tails" "Heads" "Heads"
##  [729] "Heads" "Heads" "Tails" "Heads" "Heads" "Heads" "Heads" "Heads"
##  [737] "Tails" "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Heads"
##  [745] "Tails" "Tails" "Tails" "Tails" "Heads" "Heads" "Heads" "Tails"
##  [753] "Heads" "Tails" "Heads" "Heads" "Heads" "Heads" "Tails" "Tails"
##  [761] "Tails" "Tails" "Heads" "Tails" "Heads" "Tails" "Tails" "Heads"
##  [769] "Tails" "Tails" "Tails" "Heads" "Tails" "Heads" "Tails" "Tails"
##  [777] "Tails" "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Heads"
##  [785] "Tails" "Heads" "Heads" "Heads" "Heads" "Tails" "Tails" "Heads"
##  [793] "Tails" "Tails" "Heads" "Tails" "Heads" "Heads" "Heads" "Heads"
##  [801] "Tails" "Tails" "Tails" "Heads" "Heads" "Heads" "Tails" "Tails"
##  [809] "Tails" "Heads" "Tails" "Tails" "Tails" "Tails" "Heads" "Heads"
##  [817] "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Heads" "Heads"
##  [825] "Tails" "Heads" "Tails" "Heads" "Tails" "Heads" "Heads" "Heads"
##  [833] "Tails" "Tails" "Tails" "Tails" "Heads" "Tails" "Heads" "Tails"
##  [841] "Tails" "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails"
##  [849] "Tails" "Tails" "Tails" "Heads" "Heads" "Tails" "Tails" "Tails"
##  [857] "Tails" "Heads" "Tails" "Tails" "Tails" "Tails" "Tails" "Tails"
##  [865] "Tails" "Tails" "Tails" "Tails" "Heads" "Heads" "Tails" "Heads"
##  [873] "Heads" "Heads" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails"
##  [881] "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails" "Tails"
##  [889] "Heads" "Tails" "Tails" "Tails" "Tails" "Heads" "Heads" "Tails"
##  [897] "Tails" "Heads" "Tails" "Tails" "Heads" "Heads" "Tails" "Heads"
##  [905] "Heads" "Heads" "Tails" "Heads" "Heads" "Tails" "Tails" "Tails"
##  [913] "Heads" "Heads" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails"
##  [921] "Tails" "Heads" "Heads" "Tails" "Heads" "Tails" "Tails" "Heads"
##  [929] "Tails" "Heads" "Tails" "Tails" "Heads" "Tails" "Tails" "Heads"
##  [937] "Tails" "Tails" "Tails" "Heads" "Heads" "Heads" "Heads" "Heads"
##  [945] "Heads" "Tails" "Heads" "Heads" "Tails" "Tails" "Heads" "Heads"
##  [953] "Tails" "Heads" "Heads" "Tails" "Tails" "Tails" "Heads" "Heads"
##  [961] "Heads" "Heads" "Tails" "Tails" "Heads" "Tails" "Tails" "Tails"
##  [969] "Heads" "Tails" "Tails" "Heads" "Tails" "Heads" "Heads" "Heads"
##  [977] "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Heads" "Tails"
##  [985] "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Heads" "Tails"
##  [993] "Tails" "Heads" "Heads" "Heads" "Heads" "Tails" "Tails" "Tails"

Prikaz rezultata eksperimenta

table(sample(coin, size = 1000, replace = TRUE))
## 
## Heads Tails 
##   514   486

Simulirajmo bacanje faličnog novčića

sample(coin, size = 100, replace = TRUE, prob = c(1/3,2/3))
##   [1] "Tails" "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Tails"
##   [9] "Tails" "Tails" "Tails" "Heads" "Heads" "Tails" "Heads" "Tails"
##  [17] "Tails" "Heads" "Tails" "Tails" "Tails" "Heads" "Tails" "Tails"
##  [25] "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Heads" "Tails"
##  [33] "Heads" "Tails" "Tails" "Tails" "Tails" "Tails" "Tails" "Tails"
##  [41] "Heads" "Heads" "Tails" "Tails" "Tails" "Tails" "Heads" "Tails"
##  [49] "Heads" "Heads" "Tails" "Tails" "Tails" "Tails" "Heads" "Heads"
##  [57] "Tails" "Tails" "Tails" "Tails" "Tails" "Tails" "Tails" "Tails"
##  [65] "Tails" "Heads" "Heads" "Tails" "Tails" "Tails" "Heads" "Tails"
##  [73] "Tails" "Tails" "Heads" "Tails" "Tails" "Tails" "Heads" "Heads"
##  [81] "Tails" "Tails" "Tails" "Tails" "Heads" "Heads" "Heads" "Heads"
##  [89] "Tails" "Heads" "Heads" "Tails" "Tails" "Heads" "Tails" "Heads"
##  [97] "Tails" "Heads" "Tails" "Tails"
table(sample(coin, size = 100, replace = TRUE, prob = c(1/3,2/3)))
## 
## Heads Tails 
##    29    71

Već na 100 simulacija možemo da vidimo razliku u frekvencijama.

Još jedna funkcija za generisanje slučajnosti je runif.
Ona generiše slučajan broj iz intervala (0,1) (po zakonu uniformne raspodele).
runif(size, min = a, max = b)

r <- runif(1000, 0, 1)

length(r[r < 0.5]) / 1000
## [1] 0.51
length(r[r > 2 / 3]) / 1000
## [1] 0.327