2015-12-02 468 views
0

編寫一個函數,我遇到了一個錯誤,我意識到這個錯誤是來自一個變量,在我爲它分配了一個新值之後保留了它的舊值。導致錯誤的原始代碼如下所示。 num是一個函數參數替換R中的變量/參數值

if (num == "best") 
    { num <- as.numeric(1) } 

錯誤代碼後出現是因爲num的值沒有被更改爲1。當我改變了代碼以下,錯誤就走開了。

if (num == "best") 
    { rank <- as.numeric(1) } 

指定新的值我想在代碼中稍後使用的新變量修復了這個問題。這是怎麼回事?我敢肯定,我之前已經替換了一個變量的值,而沒有這個問題......在這種情況下,R中是否存在不一致的行爲? num是這個代碼存在於函數中的函數的參數嗎?

+0

你能提供一個有效的例子嗎?我使用了'test < - function(num){if(num ==「best」){num < - as.numeric(1)}; out < - ifelse(num == 1,「是」,「否」);退(出)}'並沒有問題。 –

+4

您的代碼中可能還有別的東西在進行着,您並不知道。調試是關於**確認(不)預期的行爲**。請提供一個可重現的例子。 –

回答

0

你會得到錯誤,因爲如果只能評估一個長度爲1的邏輯向量。 我想你的「num」向量的長度大於1,你需要循環做。以下將允許您查看num矢量並根據您的情況做任何更改。

length(num) 
    for(i in 1:length(num)) 
    { 
    if (num[i] =="best") 
    {num[i]= 1} 
    }