Cosa comprare
Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 78 di 78.
Sfida
FacileCrea una funzione chiamata what_to_buy che accetta due argomenti: budget (un valore numerico) e prices (un vettore con nomi dei prezzi degli articoli). La funzione dovrebbe restituire un vettore di caratteri contenente i nomi di tutti gli articoli con prezzi inferiori o uguali al budget.
Se nessun articolo è accessibile, restituisci un vettore di caratteri vuoto usando character(0).
Riceverai i seguenti input:
- L'importo del budget (un numero)
- Un elenco di nomi di articoli separati da virgole (ad es.,
apple,banana,steak,bread) - Un elenco dei prezzi corrispondenti separati da virgole (ad es.,
2,1,15,3)
Analizza gli input per creare un vettore con nomi dei prezzi, chiama la tua funzione e stampa il risultato. Usa print() per visualizzare il vettore di caratteri restituito.
Ad esempio, se l'input è:
5
apple,banana,steak,bread
2,1,15,3L'output dovrebbe essere:
[1] "apple" "banana" "bread"Se l'input è:
10
laptop,phone,tablet
999,599,399L'output dovrebbe essere:
character(0)Suggerimenti:
- Usa
strsplit(input, ",")[[1]]per dividere le stringhe separate da virgole in vettori - Usa
as.numeric()per convertire le stringhe dei prezzi in numeri - Usa
names(prices) <- item_namesper creare un vettore con nomi - Usa l'indicizzazione logica con
names()per estrarre i nomi degli articoli accessibili
Provalo tu
# Leggi l'input
con <- file("stdin", "r")
budget <- as.numeric(suppressWarnings(readLines(con, n = 1)))
item_names_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Analizza gli input
item_names <- strsplit(item_names_input, ",")[[1]]
price_values <- as.numeric(strsplit(prices_input, ",")[[1]])
# Crea un vettore di prezzi con nomi
prices <- price_values
names(prices) <- item_names
# TODO: Scrivi la tua funzione what_to_buy qui sotto
# La funzione deve accettare budget e prices come argomenti
# e restituire un vettore di stringhe con i nomi degli articoli acquistabili
# Chiama la funzione e stampa il risultato
result <- what_to_buy(budget, prices)
print(result)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 dinamico3Operatori 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