在R中使用readline函数分配变量?

时间:2016-07-18 13:24:22

标签: r function readline

虽然这应该非常简单,但我遇到了readline函数分配变量的问题。

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

对我来说,这个简单的代码肯定会有效。虽然它似乎正常工作,但代码不会将新变量(1,2或3)分配给x。当我运行代码时,它确实返回x的新值,但不存储新的x值。如果我的代码中有任何错误,你能帮帮我吗?非常感谢提前。

1 个答案:

答案 0 :(得分:1)

你还没有展示出你是如何使用这个功能的,但我猜你正在尝试这样称呼它:

x = foo()

但你应该做的是这样称呼它:

x

(并且x不需要事先存在:你没有覆盖现有变量,而是创建一个新变量。)

实际上,函数的参数 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')) } 是不必要的(你没有使用它)。此外,您的功能可以大大简化:

{{1}}