【问题标题】:Error in if functionif函数出错
【发布时间】:2014-09-22 10:50:56
【问题描述】:

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

这发生在我尝试过的许多不同的事情上还是有其他问题?

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

【问题讨论】:

    标签: r function if-statement


    【解决方案1】:

    您确实需要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&lt;-"ARIMA" 将值 "ARIMA" 分配给名为 maxmod 的变量(并以不可见的方式返回该字符串)。

    【讨论】:

    • 这是不是 if 函数?
    • 没关系。非常感谢!我从来不知道这个功能存在!
    • 哦,当然!我完全错过了== 谢谢你的帮助
    猜你喜欢
    • 2023-02-03
    • 2015-05-29
    • 2014-10-30
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2013-07-10
    • 2015-01-14
    相关资源
    最近更新 更多