Menu
Coddy logo textTech

Modificare le liste

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

Ora che sai come creare liste e accedere ai loro elementi, impariamo a modificarle. Puoi cambiare gli elementi esistenti, aggiungerne di nuovi o rimuovere del tutto gli elementi.

Per modificare un elemento esistente, usa le doppie parentesi quadre con un'assegnazione:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"
print(my_list)

Output:

[[1]]
[1] 10

[[2]]
[1] "world"

[[3]]
[1] TRUE

Per aggiungere un nuovo elemento, assegnagli semplicemente un indice che non esiste ancora:

my_list <- list(10, "hello")
my_list[[3]] <- FALSE
print(my_list)

Output:

[[1]]
[1] 10

[[2]]
[1] "hello"

[[3]]
[1] FALSE

Per rimuovere un elemento, assegnagli NULL:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL
print(my_list)

Output:

[[1]]
[1] 10

[[2]]
[1] TRUE

Nota che, dopo aver rimosso il secondo elemento, gli elementi rimanenti si spostano per colmare il vuoto. L'elemento che si trovava in posizione 3 ora è in posizione 2.

challenge icon

Sfida

Facile

Riceverai tre righe di input:

  1. Tre valori separati da virgole per inizializzare una lista (ad es., 50,hello,TRUE)
  2. Un indice e un nuovo valore separati da una virgola per la modifica (ad es., 2,goodbye)
  3. L’indice dell’elemento da rimuovere (ad es., 3)

Esegui le seguenti operazioni:

  1. Crea una lista con i tre valori iniziali (convertendoli nei tipi appropriati: numerico, carattere, logico)
  2. Stampa la lista originale
  3. Modifica l’elemento all’indice specificato con il nuovo valore (mantienilo come stringa di caratteri)
  4. Stampa la lista dopo la modifica
  5. Aggiungi alla lista un quarto elemento con il valore 999
  6. Stampa la lista dopo aver aggiunto il nuovo elemento
  7. Rimuovi l’elemento all’indice specificato (dal terzo input)
  8. Stampa la lista finale

Ad esempio, se gli input sono:

100,world,FALSE
1,updated
2

L’output dovrebbe essere:

[[1]]
[1] 100

[[2]]
[1] "world"

[[3]]
[1] FALSE

[[1]]
[1] "updated"

[[2]]
[1] "world"

[[3]]
[1] FALSE

[[1]]
[1] "updated"

[[2]]
[1] "world"

[[3]]
[1] FALSE

[[4]]
[1] 999

[[1]]
[1] "updated"

[[2]]
[1] FALSE

[[3]]
[1] 999

Spiegazione:

  • Lista originale: 100, "world", FALSE
  • Dopo aver modificato l’indice 1: "updated", "world", FALSE
  • Dopo aver aggiunto il quarto elemento: "updated", "world", FALSE, 999
  • Dopo aver rimosso l’indice 2: "updated", FALSE, 999 (gli elementi rimanenti si spostano)

Ricorda di usare le doppie parentesi [[ ]] per le modifiche e di assegnare NULL per rimuovere gli elementi.

Provalo tu

# Leggi l'input
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1))  # Tre valori separati da virgole
modify_input <- suppressWarnings(readLines(con, n = 1))    # Indice e nuovo valore
remove_index <- suppressWarnings(readLines(con, n = 1))    # Indice da rimuovere
close(con)

# Analizza i valori iniziali
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])

# Analizza l'input per la modifica
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]

# Analizza l'indice da rimuovere
rem_index <- as.numeric(remove_index)

# TODO: Scrivi il tuo codice qui sotto
# 1. Crea una lista con i tre valori iniziali (val1, val2, val3)
# 2. Stampa la lista originale
# 3. Modifica l'elemento all'indice mod_index con mod_value
# 4. Stampa la lista dopo la modifica
# 5. Aggiungi un nuovo quarto elemento con valore 999
# 6. Stampa la lista dopo l'aggiunta
# 7. Rimuovi l'elemento all'indice rem_index (usa NULL)
# 8. Stampa la lista finale
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