if 函数出错

Sum*_*way 2 if-statement r function

我运行了一个很长的脚本来决定我应该使用哪个模型来预测。在对数据的输入和输出样本进行准确性测试后,我创建了一个大型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
Run Code Online (Sandbox Code Playgroud)

但我不断收到错误

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
Run Code Online (Sandbox Code Playgroud)

这发生在我尝试过的许多不同的事情上,例如,而不是modelf<-""我尝试过View("",title="")modelf<-View("",title="")但它仍然说它不合逻辑......我写的方式有错误还是有其他问题?

如果需要,可提供额外的细节和代码

Ric*_*ton 5

你真的需要这个switch功能。

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

您的具体问题是试图分配maxmod而不是比较是否相等。尽管该switch语句更可取,但请尝试替换

if(maxmod<-"ARIMA")
Run Code Online (Sandbox Code Playgroud)

if(maxmod == "ARIMA")
Run Code Online (Sandbox Code Playgroud)

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

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