if函数出错

时间:2014-09-22 10:50:56

标签: r function if-statement

我运行了一个很长的脚本来决定我应该使用哪种模型进行预测。在对数据的输入和输出样本进行准确性测试后,我创建了一个大的if函数来查找哪个模型最好,结果可能是" ARIMA"," Arima .wgt"," AddHW"," MultHW"," AddHWwgt"和" MultHWwgt"。在脚本中我得到了每个模型的预测,我想使用if函数来查看当前我写的

if(maxmod<-"ARIMA")
  modelf<-ArimaALTfa else
    if(maxmod<-"Arima.wgt")
      modelf<-ArimaALTfb else
        if(maxmod<-"AddHW")
          modelf<-HWAbfc else
            if(maxmod<-"MultHW")
              modelf<-HWMbfd else
                if(maxmod<-"AddHWwgt")
                  modelf<-HWAALTfe else
                    modelf<-HWMALTff

但我一直收到错误

Error in if (maxmod <- "ARIMA") modelf <- ArimaALTfa else if (maxmod <- "Arima.wgt") modelf <- ArimaALTfb else if (maxmod <- "AddHW") modelf <- HWAbfc else if (maxmod <- "MultHW") modelf <- HWMbfd else if (maxmod <- "AddHWwgt") modelf <- HWAALTfe else modelf <- HWMALTff : 
  argument is not interpretable as logical

我已经尝试了许多不同的事情,而不是modelf<-""我试过View("",title="")modelf<-View("",title=""),但它仍然说它不符合逻辑......是吗?我写的方式有错误还是有其他问题?

如果需要,可提供额外的详细信息和代码

1 个答案:

答案 0 :(得分:4)

你真的需要switch功能。

modelf <- switch(
  maxmod,
  ARIMA     = ArimaALTfa,
  Arima.wgt = ArimaALTfb,
  AddHW     = HWAbfc,
  MultHW    = HWMbfd,
  AddHWwgt  = HWAALTfe,
  HWMALTff
)

您的具体问题是尝试值分配给maxmod,而不是比较相等。虽然switch语句更可取,但请尝试替换

if(maxmod<-"ARIMA")

if(maxmod == "ARIMA")

maxmod == "ARIMA"返回TRUEFALSE(逻辑值)。

maxmod<-"ARIMA"将值"ARIMA"赋给名为maxmod的变量(并且无形地返回该字符串)。