#-*- R -*-

##########################################################
###                                                    ###
### Script tratti da `Laboratorio di statistica con R' ###
###                                                    ###
###          Stefano M. Iacus & Guido Masaratto        ###
###                                                    ###
### CAPITOLO 1                                         ###
##########################################################

require(labstatR)

### Sez 1.2.1 VETTORI E VARIABILI
x <- 4
x
y <- c(2,7,4,1)
y

y <- c(2,7,4,1)
c(2,7,4,1) -> y

ls()

assign("y",c(2,7,4,1))

for(i in 1:9)  assign( paste("V",i,sep="") , i)
ls()

paste("A","B",2,"c",sep="*")
paste("A","B",2,"c",sep="")
paste("A","B",2,"c",sep=" * ")

### Sez 1.2.2 MATRICI E OPERAZIONI ALGEBRICHE
x*y
y*y

t(y) %*% y

z <- y %*% t(y)

z

a <- matrix(1:30, 5,6)

 -1:30



# Riempimento per colonna
a <- matrix(1:30, 5,6)
a
# Riempimento per colonna
matrix(1:30, 5,6,byrow=TRUE)

t(a)

matrix(,2,3)


x <- matrix(c(1,2,3,4),1,4)
x
y <- matrix(c(1,2,3,4),4,1)
y

x*y

x %*% y

y %*% x

x <- c(1,2,3,4)
y <- c(2,4,6,8)
v1 <- x+y
v2 <- x-y
v3 <- x*y
v4 <- x/y
v1
v2
v3
v4

### Sez 1.2.3 ACCEDERE AGLI ELEMENTI DEI VETTORI
x <- 1:4
x

x <- -3:8
x

seq(-3,6,2)
seq(-3,-1,.33)

sequenza <- -3:8
sequenza

A <- matrix(sequenza,2,6)
A

sequenza[3]

A[2,3]

# seconda riga della matrice A
A[2,]
# sesta colonna della matrice A
A[,6]

x <- -3:8
x

which(x<2)

which( (x >= -1) & (x < 5) ) 

which( (x < -2) | (x > 1) ) 

### Sez 1.2.4 IL WORKSPACE
ls()
save(x,A,file="prova.rda")
rm(v1,v2,v3,v4)
ls()
rm(list=ls())
ls()
load("prova.rda")
ls()
A # la matrice A
X # object not found
x # "x" minuscolo invece esiste

### Sez 1.2.5 GLI OGGETTI E LE TIPOLOGIE DI DATI
cmp <- complex(real=1:10,imaginary=-1:9)
cmp
str <- c("tizio", "caio", "sempronio")
str
log <- c(TRUE, TRUE, FALSE, FALSE, FALSE)
log
A <- matrix(1, 4, 2)
A
# creazione di una lista
elle <- list(CPLX = cmp, NOMI = str, BOOL = log, matrice = A)
elle

# accedere agli elementi di una lista
elle$BOOL
elle[[3]]
elle$CPLX[4]
elle[[1]][4]

# comando str "struttura"
str(cmp)
str(log)
str(str)
str(A)
str(elle)

### Sez 1.2.6 LE FUNZIONI
somma <- function(a,b) a+b
somma(2,3)
somma("ciro","piro")
args(somma)
str(somma)
args(q)
body(somma)

# definiamo una strampalata funzione somma
somma <- function(a,b){
 if(a>0 & b>0)
   a+b
  else
   -1
}

# risultato corretto
somma(2,3)
# risultato strampalato
somma(2,-4)
 
### Sez 1.2.7 I CICLI E I TEST
c(TRUE, FALSE, TRUE) & c(FALSE, TRUE, TRUE)
c(TRUE, FALSE, TRUE) && c(FALSE, TRUE)

for(i in 1:9) print(1:i) 
a <- 0
for(i in 1:10000) a <- a+i
a
sum(1:10000)

### Sez 1.2.8 GLI SCRIPT O PROGRAMMI
# nessun codice

### Sez 1.2.9 SALVARE L'OUTPUT DI R
sink("output.txt")
cat("\n Hello World!\n")
sink()


# EOF Cap1.R

