Linguaggio R. Variabili ed operazioni elementari

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors


Indice

Sintassi nomi, operazioni elementari.

case sensitive (nome≠Nome). Le variabili in R sono case-sensitive, pertanto invocare il nome di una di esse con caratteri maiuscoli o minuscoli non è la stessa cosa
• sono ammessi caratteri alfanumerici, più ‘.’ (ma non possono iniziare con numero)
• dichiarazioni non necessarie
• usuali operatori aritmetici: +, -, *, /. Attenzione: l’elevamento a potenza è ^ e non **. Ad esempio, 2^3 corrisponde a 23 .
• operatori logici: ==, >=, <=, !=
• ‘;’ per separare istruzioni su stessa riga
• parentesi graffe { } per raggruppare istruzioni, es. if ( ) { ……}.


Variabili

Tipi booleani


Sono variabili che possono avere solo due valori.
In R i valori si indicano con :

  • TRUE oppure T
  • FALSE oppure F
  •  Il comando matrix accetta un parametro booleano……




Vettori e variabili

R permette di lavorare con dati strutturati. I tipi più semplici sono gli scalari e i vettori.
x <- 4; # per assegnare uno scalare a x
x <- c(1,2,3,4,5,6); # per assegnare un vettore tutto quello che c’è dopo il segno # è visto come commento
Il comando c() concatena gli elementi forniti come parametri.

Strutture dati in R

strutture dati in R

Vettori

I vettori sono sequenze (ordinate) di dati omogenei.
• Ad es., numeri interi, floating point, numeri complessi, booleani, stringhe di caratteri
• Diversamente da Python  ̶in cui un vettore può essere creato direttamente con le parentesi quadre ̶ in R bisogna usare la funzione c() seguita dagli elementi separati da virgole

vettori in R

Coercion dei vettori

Quando passiamo alle funzioni (inclusa c()) degli argomenti con tipo di valore sbagliato, R cerca di convertirli affinché le cose vengano sistemate
• Ad es., i tipi di dato nei vettori devono essere tutti uguali. Se proviamo a creare un vettore usando tipi diversi, vengono tutti convertiti per uniformarli
• ATTENZIONE: questo meccanismo, chiamato coercion, è silenzioso. R non ci avvisa che li sta convertendo, né ci dice come li ha convertiti!

Coercion

Possiamo verificare il tipo di dati di un vettore usando la funzione typeof():

Ti potrebbe interessare anche:  Intelligenza Artificiale per tutti?

> typeof(A)
“character”

• I vettori sono sempre “piatti”, anche se creiamo vettori nidificati:

A <- c(1, c(2, c(3, 4) ) )
> A
[1] 1 2 3 4
> A <- c(1, 2, 3, 4)
[1] 1 2 3 4

• Questo consente di concatenare due vettori semplicemente creando un nuovo vettore che li contiene entrambi:

A <- c(1,2,3)
> B <- c(4,5,6)
> C <- c(A,B)
C
[1] 1 2 3 4 5 6

Vettori di numeri interi

E’ possibile generare automaticamente un vettore di numeri interi compresi tra m e n con la sintassi m:n:

Vettori.generazione di numeri interi

seq(m,n,q) genera un vettore di numeri interi compresi tra m e n (incluso) con passo q
• Equivalente alla fuzione arange() di numpy
• Se non viene specificato, il passo vale 1
• Se il passo è negativo, la sequenza è decrescente

generazione di sequenze di numeri interi in R

Vettori di numeri floating point

Utilizzando l’argomento opzionale length.out, seq() genera un vettore di numeri floating point della dimensione desiderata:

Diamo un occhio, in modo più dettagliato alla funzione seq():

seq() genera una sequenza di numeri.

seq(from = 1, to = 1, by = ((to – from)/(length.out – 1)), length.out = NULL, along.with = NULL, …)

from, to: inizio e fine della sequenza di numeri.
by: step, o incremento (Default è 1)
length.out: lunghezza della sequenza ( numero degli elementi)

Esempi:

Generiamo una sequenza da -6 to 7:
> x <- seq(-6,7)
> x
[1] -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7

 

Da  -6 a 7, step=2:

> x <- seq(-6,7,by=2)
> x
[1] -6 -4 -2 0 2 4 6

Proviamo un passo più piccolo:

> x <- seq(-2,2,by=0.3)
> x
[1] -2.0  -1.7  -1.4  -1.1  -0.8  -0.5  -0.2  0.1  0.4
0.7  1.0  1.3  1.6  1.9

Supponiamo di non conoscere lo step, ma vogliamo 10 numeri distribuiti uniformemente da -2 a 2:

seq(-2,2,length.out=10)
[1] -2.0000000 -1.5555556  -1.1111111  -0.6666667  -0.2222222  0.2222222
[7] 0.6666667   1.1111111   1.5555556   2.0000000

Creare un vettore mediante ripetizione

La funzione rep(X,N) consente di generare un nuovo vettore replicando i valori in X esattamente N volte
• X può essere un valore, oppure un vettore a sua volta

Ti potrebbe interessare anche:  Uomini dietro le macchine

Esempi:

rep(1,10)
[1] 1 1 1 1 1 1 1 1 1 1
> rep((1:3), 2)
[1] 1 2 3 1 2 3
> rep( rep(1:3, 2), 2)
[1] 1 2 3 1 2 3 1 2 3 1 2 3

Creazione di un vettore inserito dall’utente

R ha una funzione chiamata scan() che consente di:
1. interrompere l’esecuzione del programma
2. leggere dei valori inseriti dall’utente
3. effettuare la coercion dei valori a un tipo di dato uniforme
4. inserire tutti i dati in un vettore

Scan() sintassi di base:

scan("data.txt", what = "character")

Esempio 1:

In genere, la funzione scan () viene applicata ai file di testo (ad esempio il formato txt). Creiamo quindi un tale file di testo sul nostro computer:

Innanzitutto, creeremo un frame di dati di esempio in R:

data <- data.frame(x1 = c(4, 4, 1, 9),                # Creiamo un data.frame di esempio
                   x2 = c(1, 8, 4, 0),
                   x3 = c(5, 3, 5, 6))
data                                                  # visualizziamo
# x1 x2 x3
#  4  1  5
#  4  8  3
#  1  4  5
#  9  0  6

I nostri dati di esempio contengono tre colonne e quattro righe con valori numerici. Ora, scriviamo questo frame di dati come file txt sul nostro computer:

write.table(data,                                     
 file = "data.txt",
 row.names = FALSE)

Ora possiamo usare scan() per leggere questo file di testo in R:
data1 <- scan("data.txt", what = "character")         # applichiamo scan()
data1                                                 
# [1] "x1" "x2" "x3" "4"  "1"  "5"  "4"  "8"  "3"  "1"  "4"  "5"  "9"  "0"  "6"

 

Esempio2:

data2 <- scan("data.txt", what = list("", "", ""))    
data2                                               
# [[1]]
# [1] "x1" "4"  "4"  "1"  "9" 
# 
# [[2]]
# [1] "x2" "1"  "8"  "4"  "0" 
# 
# [[3]]
# [1] "x3" "5"  "3"  "5"  "6"

 

Esempio3:

Scan() fornisce molte specifiche aggiuntive – e una di queste è l’opzione salta (skip). L’opzione skip consente di saltare le prime n righe del file di input. Poiché i nomi delle colonne sono in genere le prime righe di input di un file, possiamo semplicemente saltarli con la specifica skip = 1:

data3 <- scan("data.txt", skip = 1)                   
data3                                                 
# [1] 4 1 5 4 8 3 1 4 5 9 0 6

Esempio 4:

Ti potrebbe interessare anche:  Python Taxicab 1729

Possiamo leggere anche altri formati. Nel prossimo esempio creiamo un file .csv:

write.table(data,                                     
            file = "data.csv",
            row.names = FALSE)

Applichiamo la funzione scan() al file creato precedentemente:

data4 <- scan("data.csv", what = "character")         # Apply scan function to csv file
data4                                                 # Print scan output to RStudio console
# [1] "x1" "x2" "x3" "4"  "1"  "5"  "4"  "8"  "3"  "1"  "4"  "5"  "9"  "0"  "6"

Esempio 5:

Un’altra utile funzionalità di scan() è la possibilità di leggere l’input dalla console . Per fare ciò, dobbiamo prima eseguire la seguente riga di codice:

data5 <- scan("")

 

Assegnazione di valori alle variabili.

esistono sei modi per assegnare dei valori alle variabili.

Ad es., per assegnare il valore 42 alla variabile A:

• Possiamo usare il singolo uguale = (come in Python)
> A = 42
• Il metodo tradizionale è mediante l’operatore “freccia” <- (scorciatoia: ALT + -)
> A <- 42
• Si può anche usare nell’altro verso purché la freccia punti alla variabile
> 42 -> A
Possiamo poi usare la funzione assign(“variabile”, valore)
> assign(“A”, 42)
• Esistono poi le notazioni alternative ->> e <<- che in R sono perfettamente lecite…

Scrivere su un file

• In R possiamo scrivere dei dati di una variabile in un file utilizzando la funzione write(dati, file=”nome_file”)
• dati è un elemento che contiene i dati (ad es., un vettore)
• “nome_file” è il nome del file da creare nella directory corrente
• ATTENZIONE: il nome del file viene passato come argomento mediante l’uguale

> A <- c(1,2,3,4,5)
> write(A, file=”numeri.txt”)

 

 

(574)