Was zu kaufen ist
Teil des Abschnitts Grundlagen der R-Journey von Coddy — Lektion 78 von 78.
Aufgabe
EinfachErstellen Sie eine Funktion namens what_to_buy, die zwei Argumente entgegennimmt: budget (ein numerischer Wert) und prices (ein benannter Vektor von Artikelpreisen). Die Funktion sollte einen Character-Vektor zurückgeben, der die Namen aller Artikel enthält, deren Preise kleiner oder gleich dem Budget sind.
Wenn keine Artikel erschwinglich sind, geben Sie einen leeren Character-Vektor mit character(0) zurück.
Sie erhalten die folgenden Eingaben:
- Der Budgetbetrag (eine Zahl)
- Eine durch Kommas getrennte Liste von Artikelnamen (z. B.
apple,banana,steak,bread) - Eine durch Kommas getrennte Liste der entsprechenden Preise (z. B.
2,1,15,3)
Verarbeiten Sie die Eingaben, um einen benannten Vektor von Preisen zu erstellen, rufen Sie Ihre Funktion auf und geben Sie das Ergebnis aus. Verwenden Sie print(), um den zurückgegebenen Character-Vektor anzuzeigen.
Wenn die Eingabe zum Beispiel wie folgt aussieht:
5
apple,banana,steak,bread
2,1,15,3Sollte die Ausgabe wie folgt lauten:
[1] "apple" "banana" "bread"Wenn die Eingabe wie folgt aussieht:
10
laptop,phone,tablet
999,599,399Sollte die Ausgabe wie folgt lauten:
character(0)Hinweise:
- Verwenden Sie
strsplit(input, ",")[[1]], um durch Kommas getrennte Zeichenfolgen in Vektoren aufzuteilen - Verwenden Sie
as.numeric(), um die Preis-Zeichenfolgen in Zahlen umzuwandeln - Verwenden Sie
names(prices) <- item_names, um einen benannten Vektor zu erstellen - Verwenden Sie logische Indizierung mit
names(), um die Namen der erschwinglichen Artikel zu extrahieren
Probier es selbst
# Eingabe lesen
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)
# Eingaben parsen
item_names <- strsplit(item_names_input, ",")[[1]]
price_values <- as.numeric(strsplit(prices_input, ",")[[1]])
# Erstelle einen benannten Vektor der Preise
prices <- price_values
names(prices) <- item_names
# TODO: Schreibe deine Funktion what_to_buy unten
# Die Funktion sollte budget und prices als Argumente entgegennehmen
# und einen Zeichenvektor der erschwinglichen Artikelnamen zurückgeben
# Funktion aufrufen und das Ergebnis ausgeben
result <- what_to_buy(budget, prices)
print(result)Alle Lektionen in Grundlagen
4Operatoren Teil 2
Logische Operatoren (AND, OR)Logische Operatoren Teil 2 (NOT)Wiederholung – Einfache LogikVektorisierte Logik Teil 1Vektorisierte Logik Teil 27Rechnungs-Split-Rechner
WillkommensnachrichtBenutzereingaben abfragen10FizzBuzz mit einer Besonderheit
SpielübersichtDie FizzBuzz-Funktion13Vektoren für Fortgeschrittene
Vektor-Slicing und IndizierungLogische IndizierungVektorarithmetik & RecyclingDer %in%-Operator2Variablen und Datentypen
Numerischer DatentypGanzzahl-DatentypZeichen-DatentypLogischer DatentypDatentypen prüfenBenennungskonventionenFehlende Werte: NAZusammenfassung – Variablenerstellung5Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher TaschenrechnerVerschachteltes If - Else8Schleifen
For-SchleifeWhile-SchleifeBreakNext (Continue)Rückblick - FakultätSequenzgenerierung (seq, :)Verschachtelte SchleifenRückblick - Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenGanzzahlige Division und ModuloZuweisungsoperatorenWiederholung - Einfache MathematikVergleichsoperatoren6Grundlagen der Ein- und Ausgabe
Print-AusgabeCat zur AusgabeAusgabe mit VariablenEingabe lesen mit readline()Grundlagen der TypumwandlungWiederholung – AltersrechnerWiederholung – Wahr oder Falsch9Funktionen
Funktionen deklarierenFunktionsargumenteRückgabewerteWiederholung - Sigma-FunktionWiederholung - ValidierungsfunktionStandard-Parameterwerte