2016-11-06 88 views
0

我想创建一个变量XO从用户的答案在一个简短的问题。我还希望系统写入,用户选择了什么。代码如下所示:R - 从阅读线创建变量

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" 
} 

FUN1正确创建的函数,但回答问题后(我的回答是如 “X”),系统显示错误:

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

而且XO未创建。

请问,你能帮我吗,我做错了什么?提前致谢。

回答

0

R,&仅用于逻辑分配,不用于连接句子。 你想要做的是把这段代码放在大括号内的块中,并将它们分成不同的行。如果条件成立,R将运行大括号内的孔块。

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" 
    } 
} 

您使用=fun1函数内部的XO变量分配。看看this question,以确保这就是你想要的。如果您希望它在全球环境中也可用,请改为使用<<-

+0

谢谢你的帮助。但是,当我运行您编写的代码时,系统告诉我,找不到对象“XO”。你知道吗,如何解决这个问题? – Sasanka20

0

我不确定是什么给你这个问题!我运行了你的代码,我得到了结果。

> 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" 

你可以分享的版本信息,

+0

@ sasanka20它完全回答你的问题吗?介意通过http://stackoverflow.com/help/someone-answers –