Instalacija R/Rstudio

Prvo je potrebno instalirati programski jezik R, a onda Rstudio IDE. Uputstvo sa slicicama se moze videti na ovom linku.

Osnovni koraci

Deklaracija promjenljive

Operator dodjele u R-u je <- (ali moze da se koristi i =)

x <- 9    

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

9 -> x

Numericke vrijednosti su podrazumijevano tipa double ( na primer 5/2 nije cjelobrojno dijeljenje 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 podaci čuvaju 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 cijela dva vektora

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

Ako dva vektora nisu iste dužine, vrijednosti 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 (primjenjuje 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 cijele 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 vrijednosti 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 aritmetickih operacija 
## [1] 4 5 6 7 8 9

Novi vektor može se izdvojiti iz datog vektora uz pomoć vektora sa logičkim vrijednostima 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 dodijelimo imena članovima vektora

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

Zatim mozemo da pristupimo elementima po imenu

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

Neke funkcije nad vektorima

vec <- rev(vec) # obrce redosled clanova 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)  # uzoracka sredina 
## [1] 38.5
var(vec)   # popravljena uzoracka 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

Izmjene 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,
            byrow = TRUE)   # popunjavamo matrice po redovime (po default-u je po kolonama)
M[2, 3]
## [1] 7
M[2, ]       # drugi red
## [1] 1 5 7
M[, 3]       # treca 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
# }

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

Primjer

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

Pozivanje funkcije

pow(2, 3)
## [1] 8

Ili..

pow(x = 2, y = 3)
## [1] 8
pow(y = 3, x = 2)  #nije bitan redosled argumenata u ovom slucaju
## [1] 8

if/else

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

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

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] 10  8  7  9  5  6  4  3  1  2
sample(10)  # je poziv ekvivalentan prethodnom 
##  [1]  2  9  8  3  6  1  5  4 10  7

Ova funkcija ima argument replace čija je vrijednost podrazumijevano FALSE, što znači da se simulira slučajno biranje brojeva bez ponavljanja.
Ako proslijedimo vrijednost TRUE funkcija vraća slučajan uzorak sa ponavljanjem.
Još jedan argument je prob (odnosno probability) i on je podrazumijevano NULL, a možemo da zadamo neke težine (vjerovatnoće) elementima skupa.
Argument size određuje koliko elemenata biramo iz proslijeđ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 duzine 2
## [1]  9 10
sample(x[x > 9])  #izlaz: vektor duzine 10
##  [1]  1  5  4  9  8  3  6  7  2 10

Hocemo da simuliramo bacanje novcica

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

Sada želimo 100 simulacija ovog slučajnog eksperimenta

#sample(coin, size = 100)

Javlja grešku. Treba da promijenimo vrijednost argumenta replace

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

Prikaz rezultata eksperimenta

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

Simulirajmo bacanje faličnog novcica

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

Već na sto simulacija mozemo da vidimo razliku u frekvencijama

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

r <- runif(1000, 0, 1)

length(r[r < 0.5]) / 1000
## [1] 0.482
# ili

mean(r<0.5)
## [1] 0.482
# Kad primijenimo arimeticku funkciju na logicki vektor, vrijednosti T i F se tretiraju kao 1 i 0.

length(r[r > 2 / 3]) / 1000
## [1] 0.347
# ili

mean(r>2/3)
## [1] 0.347

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 mijenjamo sadržaj liste

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