Menu
Coddy logo textTech

Slicing e indicizzazione dei vettori

Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 67 di 78.

Hai imparato ad accedere ai singoli elementi e a scorrere i vettori. Ora scopriamo come estrarre più elementi contemporaneamente usando lo slicing. Questa tecnica ti permette di ottenere un sottoinsieme di un vettore con una sola operazione.

Per estrarre più elementi, passa un vettore di indici tra parentesi quadre:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])

Output:

[1] 10 30 50

Puoi anche usare l'operatore due punti per selezionare un intervallo di elementi consecutivi:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])

Output:

[1] 20 30 40

Gli indici negativi sono potenti in R. Escludono gli elementi invece di selezionarli:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])

Output:

[1] 10 30 40 50

Puoi escludere più elementi passando un vettore di indici negativi:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])

Output:

[1] 20 30 40

Ricorda: non puoi combinare indici positivi e negativi nella stessa selezione. R genererà un errore se provi numbers[c(1, -2)].

challenge icon

Sfida

Facile

Riceverai due righe di input:

  1. Un elenco di numeri separati da virgole (ad es., 100,200,300,400,500,600,700)
  2. Due indici separati da una virgola che rappresentano un intervallo da escludere (ad es., 2,5)

Il codice iniziale legge già l'input e crea il vettore numerico. Stampa esattamente quattro righe, in quest'ordine:

  1. Stampa gli elementi nelle posizioni 1, 3 e 5 usando un vettore di indici
  2. Stampa gli elementi dalla posizione 2 alla posizione 4 usando l'operatore dei due punti
  3. Stampa il vettore escludendo l'elemento all'indice specificato per primo (usando l'indicizzazione negativa)
  4. Stampa il vettore escludendo gli elementi dal primo indice al secondo indice (usando l'indicizzazione negativa con un intervallo)

Ad esempio, se gli input sono:

10,20,30,40,50,60,70
3,5

L'output dovrebbe essere:

[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70

Spiegazione:

  • Gli elementi nelle posizioni 1, 3 e 5 sono: 10, 30, 50
  • Gli elementi dalla posizione 2 alla posizione 4 sono: 20, 30, 40
  • Escludendo la posizione 3 si ottiene: 10, 20, 40, 50, 60, 70
  • Escludendo le posizioni dalla 3 alla 5 si ottiene: 10, 20, 60, 70

Provalo tu

# Leggi l'input
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
indices_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# Converti i numeri separati da virgole in un vettore numerico
numbers <- as.numeric(strsplit(numbers_input, ",")[[1]])

# Converti i due indici
indices <- as.numeric(strsplit(indices_input, ",")[[1]])
idx1 <- indices[1]
idx2 <- indices[2]

# TODO: Scrivi il tuo codice qui sotto
# 1. Stampa gli elementi nelle posizioni 1, 3 e 5 usando un vettore di indici

# 2. Stampa gli elementi dalla posizione 2 alla posizione 4 usando l'operatore due punti

# 3. Stampa il vettore escludendo l'elemento nella posizione idx1 (indicizzazione negativa)

# 4. Stampa il vettore escludendo gli elementi da idx1 a idx2 (indicizzazione negativa con un intervallo)
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore R online