2016-07-18 28 views
0

雖然這應該很簡單,但我在使用readline函數分配變量時遇到了問題。在R中使用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

您還沒有表現出你是如何使用的功能,但我猜你想調用它是這樣的:

foo(x) 

但你應該做的事情就是調用它是這樣的:

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')) 
} 
+0

Ahhh謝謝!我是R的新手,這類小問題總是讓我感到困擾。感謝這個緊湊(更好)的代碼。 – sh2657