Accedere agli elementi di una lista
Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 72 di 78.
Le liste usano una sintassi diversa per accedere agli elementi rispetto ai vettori. La differenza fondamentale è tra parentesi singole [ ] e parentesi doppie [[ ]].
Le doppie parentesi estraggono l’elemento effettivo dalla lista:
my_list <- list(42, "hello", TRUE)
print(my_list[[1]])Output:
[1] 42Le parentesi singole restituiscono una sottolista contenente l'elemento, non l'elemento stesso:
my_list <- list(42, "hello", TRUE)
print(my_list[1])Output:
[[1]]
[1] 42Questa distinzione è importante quando vuoi lavorare con il valore effettivo. Se un elemento di una lista è un vettore, le doppie parentesi ti consentono di accedervi direttamente e poi di usare l’indicizzazione dei vettori:
my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2])Output:
[1] 20Qui, my_list[[1]] recupera il vettore e [2] accede al suo secondo elemento. Ricorda: usa [[ ]] quando ti serve il contenuto effettivo e [ ] quando vuoi una lista più piccola.
Sfida
FacileRiceverai due righe di input:
- Tre valori separati da virgole di tipi diversi (ad es.,
100,hello,TRUE) - Un elenco di numeri separati da virgole che rappresentano un vettore da memorizzare come quarto elemento (ad es.,
5,10,15,20)
Esegui le seguenti operazioni:
- Crea una lista con quattro elementi: il valore numerico, il testo, il valore logico e il vettore di numeri
- Usa le doppie parentesi quadre per estrarre e stampare il secondo elemento (il valore testuale)
- Usa le parentesi quadre singole per estrarre il terzo elemento e stampare il risultato (nota la differenza nel formato dell'output)
- Accedi al vettore memorizzato nel quarto elemento usando le doppie parentesi quadre, quindi estrai e stampa il suo terzo valore usando l'indicizzazione del vettore
- Stampa la somma di tutti i numeri nel quarto elemento (accedi al vettore con le doppie parentesi quadre e usa
sum())
Ad esempio, se gli input sono:
42,world,FALSE
8,16,24,32,40L'output dovrebbe essere:
[1] "world"
[[1]]
[1] FALSE
[1] 24
[1] 120Spiegazione:
my_list[[2]]estrae il valore testuale effettivo: "world"my_list[3]restituisce una sottolista contenente FALSE (nota il[[1]]nell'output)my_list[[4]][3]accede al vettore, quindi recupera il suo terzo elemento: 24sum(my_list[[4]])calcola 8+16+24+32+40 = 120
Provalo tu
# Leggi l'input
con <- file("stdin", "r")
input1 <- suppressWarnings(readLines(con, n = 1)) # Prima riga: tre valori separati da virgole
input2 <- suppressWarnings(readLines(con, n = 1)) # Seconda riga: numeri separati da virgole per il vettore
close(con)
# Suddividi la prima riga di input in valori separati
values <- strsplit(input1, ",")[[1]]
numeric_val <- as.numeric(values[1])
text_val <- values[2]
logical_val <- as.logical(values[3])
# Converti la seconda riga di input in un vettore numerico
vector_val <- as.numeric(strsplit(input2, ",")[[1]])
# TODO: Scrivi il tuo codice qui sotto
# 1. Crea una lista con quattro elementi: numeric_val, text_val, logical_val e vector_val
# 2. Usa le doppie parentesi quadre [[ ]] per estrarre e stampare il secondo elemento
# 3. Usa le parentesi quadre singole [ ] per estrarre il terzo elemento e stamparlo
# 4. Accedi al quarto elemento con le doppie parentesi quadre, poi estrai il suo terzo valore
# 5. Stampa la somma di tutti i numeri nel quarto elementoQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 2
Operatori logici (AND, OR)Operatori logici Parte 2 (NOT)Ripasso - Logica sempliceLogica vettorializzata Parte 1Logica vettorializzata Parte 27Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire input dell'utente10FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz13Vettori: argomenti avanzati
Slicing e indicizzazione dei vettoriIndicizzazione logicaAritmetica dei vettori e ricicloL’operatore %in%2Variabili e tipi di dati
Tipo di dato numericoTipo di dato interoTipo di dato carattereTipo di dato logicoControllo dei tipi di datoConvenzioni di denominazioneValori mancanti: NARiepilogo - Creazione di variabili8Cicli
Ciclo forCiclo whilebreaknext (continue)Riepilogo - FattorialeGenerazione di sequenze (seq, :)Cicli annidatiRiepilogo - Input dinamico11Vettori
Creare vettori con c()Accedere agli elementi dei vettoriModificare i vettoriOperazioni sui vettoriRipasso - Vettore dei prezziRipasso - Vettore invertitoVettori con nome14Liste in R
Creare listeAccedere agli elementi di una listaModificare le listeListe con nomiRiepilogo - Lista dei prodotti3Operatori Parte 1
Operatori aritmeticiDivisione intera e moduloOperatori di assegnazioneRiepilogo - Matematica sempliceOperatori di confronto6I/O di base
Stampare l'outputcat per l'outputOutput con variabiliLeggere l'input con readline()Nozioni di base sulla conversione dei tipiRiepilogo - Calcolatore dell'etàRiepilogo - Vero o falso9Funzioni
Dichiarare una funzioneArgomenti della funzioneValori di ritornoRiepilogo - Funzione SigmaRiepilogo - Funzione di validazioneValori predefiniti dei parametriEsercitati da solo: Compilatore R online