Riepilogo - Calcolatrice sicura
Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 56 di 64.
Sfida
DifficileCompleta evaluate(expr). Un’espressione è <number> <operator> <number> con spazi attorno all’operatore, ad esempio 8 / 2. Genera errori con stop() per ogni problema, verificandoli in quest’ordine:
expected: number operator numberquando non ci sono esattamente tre parti'<part>' is not a numberper la prima parte numerica che non può essere convertita, ad esempio'x' is not a numberunknown operator <op>quando l’operatore non è+,-,*o/division by zero
Altrimenti restituisci il risultato, arrotondato a quattro cifre decimali con round(value, 4).
Poi completa run_all(exprs): valuta ogni espressione all’interno di tryCatch() e restituisce una riga per espressione, 8 / 2 = 4 oppure 5 / 0 -> error: division by zero.
Il codice fornito passa ogni riga di input a run_all() e stampa ogni riga restituita.
Provalo tu
evaluate <- function(expr) {
# Scrivi il tuo codice qui
0
}
run_all <- function(exprs) {
# Scrivi il tuo codice qui
character(0)
}
# Codice di input/output fornito: lascialo così com'è
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Sottostringhe con substr()Formattazione con sprintf()Dividere e unireRicerca nelle stringheSostituzione del testoRipasso - Generatore di nomi utente4Matrici
Creazione di matriciIndicizzazione delle matriciRiepiloghi di righe e colonneOperazioni aritmetiche con le matriciRipasso - Schema dei posti a sedere10Flusso di controllo avanzato
La funzione switch()ifelse() vettorialerepeat e breakFunzioni ricorsiveRiepilogo - Classificatore di voti2Ricerche chiave-valore
Ricerche in vettori con nomiControllare le chiaviAggiungere e rimuovere chiaviIterare sui nomiRiepilogo - Sportello titoli5Progetto - Registro dei voti
Aggiungere studentiRegistrare i voti8Ordinamento e raggruppamento
Ordinare i vettoriOrdinare in base a una chiaveRaggruppare con split()Riepiloghi dei gruppiRipasso - Classifica11Gestione degli errori
Generare errori con stop()Gestire gli errori con tryCatch()Avvisi e finallyConvalidare l'inputRiepilogo - Calcolatrice sicura3Insiemi e conteggio
Valori univociOperazioni sugli insiemiTest di appartenenzaConteggio con table()Riepilogo - Ospiti dell’evento6Le funzioni come valori
Funzioni anonimePassare funzioniRestituire funzioniClosure con statoRiepilogo - Regole di sconto9DataFrame
Creare DataFrameColonne e righeFiltrare le righeAggiungere e ordinareRiepilogo - Report delle vendite12Progetto - Gestione delle spese
Registrare le speseSpesa totaleEsercitati da solo: Compilatore R online