Wie man Wenn & # 133-Else-Anweisungen in R Verwenden

Wenn R verwenden, manchmal müssen Sie Ihre Funktion etwas zu tun, wenn eine Bedingung wahr und etwas anderes ist, wenn es nicht ist. Sie können dies tun, mit zwei ob Aussagen, aber es ist ein einfacher Weg, in R: ein ansonsten Erklärung. Ein wenn # 133-else Anweisung enthält die gleichen Elemente wie ein ob Aussage (siehe den vorhergehenden Abschnitt), und dann einige Extra:

  • Das Schlüsselwort sonst, nach dem ersten Codeblock platziert

  • Ein zweiter Codeblock, in Klammern enthalten sind, dass, wenn das Ergebnis der Zustand, wenn und nur in die durchgeführt werden muss, ob() Aussage FALSCH

In einigen Ländern ist die zugegebene Menge der Mehrwertsteuer (MwSt) an, ob der Kunde eine öffentliche oder private Organisation hängt von bezahlt werden muss. Stellen Sie sich vor, dass öffentliche Organisationen haben nur 6 Prozent Mehrwertsteuer und privaten Organisationen zu zahlen haben 12 Prozent Mehrwertsteuer bezahlen. Sie können ein zusätzliches Argument hinzufügen Öffentlichkeit zum Preiskalkulator () Funktion und nimmt es wie folgt die korrekte Höhe der Mehrwertsteuer hinzuzufügen:

if (Stunden> 100) net.price lt; - net.price * 0.9if (öffentlich) {tot.price lt; - net.price * 1,06} else {tot.price lt; - net.price * 1,12} round (tot.price)}

Wenn Sie diesen Code an die Konsole zu senden, können Sie die Funktion zu testen. wenn Sie 25 Stunden lang zum Beispiel gearbeitet, der folgende Code gibt Ihnen die verschiedenen Beträge, die Sie für die öffentlichen und privaten Organisationen berechnen jeweils:

> Preiskalkulator (25, public = TRUE) [1] 1060> Preiskalkulator (25, public = FALSE) [1] 1120

Das funktioniert gut, aber wie funktioniert es?

Wenn man sich die ansonsten Anweisung in der vorherigen Funktion, finden Sie diese Elemente. Wenn der Wert des Arguments Öffentlichkeit ist WAHR, der Gesamtpreis wird als das 1,06-fache der Nettopreis berechnet. Ansonsten ist der Gesamtpreis 1,12-fache der Nettopreis.

Das ob Anweisung muss einen logischen Wert zwischen den Klammern. Jeder Ausdruck Sie zwischen den Klammern gesetzt wird ausgewertet, bevor sie an die übergeben wird ob Erklärung. Also, wenn Sie direkt mit einem logischen Wert arbeiten, müssen Sie sich nicht überhaupt einen Ausdruck angeben. Verwendung beispiels, if (public == TRUE) ist überflüssig.

Auch in dem Fall eines ansonsten Anweisung können Sie die Klammern fallen, wenn beide Codeblöcke bestehen nur aus einer einzigen Codezeile. So konnten Sie nur über die Zahnspange vergessen und drücken Sie die ganze ansonsten Anweisung auf einer einzigen Zeile. Oder man könnte es sogar so schreiben:

if (public) tot.price lt; - net.price * 1,06 elsetot.price lt; - net.price * 1.12

Putting die sonst Erklärung am Ende einer Zeile und nicht am Anfang des nächsten ist eine gute Idee.

Im Allgemeinen liest R mehrere Zeilen als eine einzige Zeile, solange es absolut klar, dass der Befehl noch nicht abgeschlossen ist. Wenn Sie setzen sonst zu Beginn der zweiten Linie, hält R die erste Zeile beendet und beschwert sich. Du kannst Geben sonst am Anfang einer erst im nächsten Zeile, wenn Sie dies tun, innerhalb einer Funktion und Sie die komplette Quelle der Datei auf einmal zu R.

Aber Sie können diese kürzer machen. Das ob Anweisung funktioniert wie eine Funktion und damit auch einen Wert zurückgibt. Als Ergebnis können Sie diesen Wert zu einem Objekt zuweisen oder verwenden Sie es in Berechnungen. Anstatt also Neuberechnen Nettopreis und Zuweisung des Ergebnisses zu tot.price innerhalb der Code-Blöcke, können Sie mit dem ansonsten Anweisung wie folgt:

tot.price lt; - net.price * if (public) 1,06 sonst 1,12

R wird zuerst die Evaluierung ansonsten Aussage und multiplizieren Sie das Ergebnis von Nettopreis. Das Ergebnis davon wird dann zugewiesen tot.price. Dies unterscheidet sich nicht ein Jota von dem Ergebnis der fünf Zeilen Code, den wir für das Original verwendet ansonsten Erklärung.

Menü