#costruiamo un vettore

x <- c(0., 4.5, 1.3, 3.2)
y <- c(2, 5.2, 3, 0)

2*x
x^2  # etc.

x+y
x/y

z <- c(0, NA, 3, 1/0)

(z <- c(0, NA, 3, 1/0))  # notare la differenza: z viene contestualmente
                         # visualizzata sulla console

r <- x/z


# accesso agli elementi del vettore


x[1]                 # i vettori cominciano da 1
x[1:2]

x[-2]                # esclude elemento 2


head(x,2)
tail(x,2)


rev(x)
rev(tail(x,2))


xp <- x[x>0]         # selezione
x1 <- x[x>0 & x<4]
x[c(1,3)]
x[-c(1,3)]

z[x>0 & x<4]
z[y<3]

z[!is.na(z) & !is.infinite(z)]

# cos'e' in realta' una selezione?
(sel <- x>0)
x[sel]


# per trovare l'indice
match(4.5, x)
match(5, x)


# nota
1/0 + 1/0   # Inf
1/0 - 1/0   # NaN


x > 2

s1 <- 1:10                # sequenze
s2 <- seq(0, 10, by=0.2) 
length(s2) 
s3 <- seq(length=51, from=0,  by=0.2)
s4 <- seq(length=51, from=0, to=10)

x5 <- rep(x, 5)           # ripetizione di numeri (o di vettori)

# Altro esempio

x <- 1:5    
y <- x          # duplica vettore
z <- c(x,y)     # concatena
y[5] <- 1       # modifichiamo un valore
x == y          # vettore di test
identical(x,y)  # confronta vettori complessivamente

any(x == 0)         # almeno una componente soddisfa la condizione?
any(x == 1)
any(is.infinite(x)) 
x[1] <- 1/0         # modifichiamo
any(is.infinite(x)) 

# il complemento e' all()


# altre importanti operazioni sui vettori:
sort(x)

sum(x)
sum(z) # !!
sum(r) # !!
sum(z, na.rm = TRUE)   
sum(r, na.rm = TRUE)

cx <- cumsum(x)

findInterval(5, cumsum(x)) # come si fa a beccare il piu' vicino?

library(GenKern)       # <<=== 
nearest(x,5)


# vedi anche (ma non per qui):
Fn <- ecdf(x)
