#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)