2016-07-18 14 views
0

Obwohl dies sehr einfach sein sollte, habe ich ein Problem mit der readline -Funktion, um Variablen zuzuweisen.Zuweisung einer Variablen mit Hilfe der readline-Funktion in R?

fun <- function(x){ 
x <- readline(prompt="Please choose your color 'red, blue, yellow' ") 
if (x=="red") { 
    x<-1} 
else if (x=="blue") { 
    x<-2} 
else if (x=="yellow") { 
    x<-3} 
else {print("Please choose the color provided above")} 
return(x) 
} 

Für mich sollte dieser einfache Code auf jeden Fall funktionieren. Obwohl es scheint, als ob es ordnungsgemäß funktioniert, weist der Code die neue Variable (1, 2 oder 3) nicht in x zu. Wenn ich den Code ausführe, wird der neue Wert von x zurückgegeben, aber der neue X-Wert wird nicht gespeichert. Könnten Sie mir helfen, wenn es einen Fehler in meinem Code gibt? Vielen Dank im Voraus.

Antwort

1

Sie haben nicht gezeigt, wie Sie die Funktion verwenden, aber ich vermute, dass Sie versuchen, es so etwas zu nennen:

foo(x) 

Aber was Sie sollte tun ist Aufruf es wie folgt:

x = foo() 

(Und x muss nicht vorher existieren. Sie sind nicht eine vorhandene Variable überschreiben, sind Sie ein neues erstellen)

In der Tat ist das Argumentx zu der Funktion unnötig (Sie verwenden es nicht). Außerdem kann Ihre Funktion ganz wesentlich vereinfacht werden:

fun = function() { 
    x = readline(prompt="Please choose your color 'red, blue, yellow' ") 
    switch(x, red = 1, blue = 2, yellow = 3, 
      stop('Please choose a color provided above')) 
} 
+0

Ahhh Danke! Ich bin neu in R und diese Art von kleinen Problemen nervt mich immer. Danke für den kompakten (und besseren) Code auch. – sh2657

Verwandte Themen