2016-11-06 1 views
0

Ich möchte eine Variable XO aus der Antwort des Benutzers auf eine kurze Frage erstellen. Und ich möchte auch System schreiben, welcher Benutzer ausgewählt hat. Der Code sieht wie folgt aus:R - Erstellen von Variablen aus dem Lesen der Zeile

fun1 <- function() { 
XO <- readline(prompt = "Do you want X, or O? ") 
if (substr(XO, 1, 1) == "X") 
    cat("You have chosen X.\n") & XO = "X" 
else 
    cat("You have chosen O.\n") & XO = "O" 
} 

Die Funktion fun1 ordnungsgemäß erstellt wird, aber nach der Beantwortung der Frage (meine Antwort lautet zB "X"), System zeigt Fehler:

Error in cat("You have chosen X.\n") & XO = "X" : 
    target of assignment expands to non-language object 

Und XO ist nicht erstellt.

Bitte, könnten Sie mir helfen, was mache ich falsch? Danke im Voraus.

Antwort

0

In R wird & nur in logischen Zuordnungen verwendet, nicht für das Verbinden von Sätzen. Was Sie tun möchten, ist das Stück Code in einem Stück in geschweiften Klammern setzen {} und teilen Sie sie in verschiedenen Zeilen. Wenn die Bedingung wahr ist, wird R den Lochblock innerhalb der geschweiften Klammern ausführen.

fun1 <- function() { 
    XO <- readline(prompt = "Do you want X, or O? ") 
    if (substr(XO, 1, 1) == "X") { 
    cat("You have chosen X.\n") 
    XO <<- "X" 
    } else { 
    cat("You have chosen O.\n") 
    XO <<- "O" 
    } 
} 

Sie verwenden = die XO Variable innerhalb der fun1 Funktion zuweisen. Werfen Sie einen Blick auf this question um sicher zu sein, dass Sie das wollen. Wenn Sie möchten, dass es auch in der globalen Umgebung verfügbar ist, verwenden Sie stattdessen <<-.

+0

Vielen Dank für die Hilfe. Wenn ich jedoch den Code ausführe, den Sie geschrieben haben, sagt das System mir, dass das Objekt "XO" nicht gefunden wird. Weißt du, wie man dieses Problem löst? – Sasanka20

0

Ich bin mir nicht sicher, was Sie dieses Problem gibt! Ich lief den gleichen Code von dir und ich bekomme die Ergebnisse.

> X0 <- readline(prompt = "Do you want X, or O? ") 
Do you want X, or O? X 
> X0 
[1] "X" 

> X0 <- readline(prompt = "Do you want X, or O? ") 
Do you want X, or O? Q 
> X0 
[1] "Q" 

> X0 <- readline(prompt = "Do you want X, or O? ") 
Do you want X, or O? O 
> X0 
[1] "O" 

könnten Sie Versionsinformationen teilen,

+0

@ sasanka20 beantwortet es deine Frage vollständig? Denk daran, http://stackoverflow.com/help/someone-answers durchzugehen –

Verwandte Themen