Ich möchte switch
verwenden, um eine Zeichenfolge zu erhalten, aber die Werte, die der auszuwertende Ausdruck annehmen kann, sind 0:20
. Im Idealfall würde ich so etwas wieSwitch-Anweisung mit Nullindexierung
switch(val,
0 = "output0",
1 = "output1",
2 = "output2",
.
.
.
20 = "output20")
will Aber das funktioniert nicht, weil val
ein numerischer Wert ist. Ich könnte dies nur mit if
Anweisungen tun, aber ich würde lieber die switch
Syntax verwenden, wie ich gelesen habe, dass es schneller ist und auch ist es kompakter. Gibt es eine Funktion, die tun kann, was ich will, oder gibt es eine Möglichkeit, switch
für meinen Zweck zu verwenden?
Ihre beiden Lösungen funktionieren. Ich ziehe die erste vor, da ich Schalter mit numerischen Eingaben nicht gerne benutze, weil ich denke, dass ich zählen muss, um herauszufinden, was für eine Eingabe das Beste ist (ich dachte eigentlich an die zweite, bevor ich die Frage stelle) . Danke vielmals! –
Und whoops, die erste Lösung funktioniert nur, wenn ich zuerst die Eingabe in Zeichen umwandeln. Für meine Eingabe, die generisch einen numerischen Wert von "1: 20" hat, muss ich also "switch (as.character (val)," 0 "=" output0 "," 1 "=" output1 ")' ' damit es mir den Output gibt, den ich will. –
Die Frage besagt ausdrücklich, dass "val ein Zeichenwert ist". –