2015-12-02 76 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} 
    }