elsif语句中的“错误:缺少需要TRUE / FALSE的值”?

时间:2019-08-14 09:35:31

标签: r if-statement

我正在编写一个应用程序(发光),需要检查您是否要使用特定数据,为此您需要1.选中一个框,然后2.检查数据的日期应少于30天。为此,我写了一个if (elseif)声明

recent <- reactive({ 
  ifelse( as.numeric(difftime(Sys.Date(), as.POSIXct(input$date) )) <= 30 && input$hist==TRUE, TRUE, FALSE )  
})

其中input$hist是UI上具有默认值input$hist = FALSE的复选框,如果您选中box = TRUEinput$date也是来自UI的输入,它是一个日期。如果您不熟悉RShiny,则反应式仅表示在用户界面上发生某些更改时会自动更新此值。

我尝试编写不同的if / else语句,并使用除 TRUE / FALSE 以外的其他变量值等。

  

错误:缺少TRUE/FALSE的值

1 个答案:

答案 0 :(得分:1)

问题是输入的初始化阶段。此时input$dateinput$hist等于NULL。由于NULL既不是TRUE也不是FALSE,因此出现错误。有两种方法:

  1. 使用req(input$x)函数。仅在第一次更改input$x之后,才会对此进行评估。在您的情况下,您还必须在第二种情况下使用req()。
  2. 即使recentinput$dateinput$hist,也要评估NULL。即:
recent <- reactive(
             !is.null(input$date) &&
             !is.null(input$hist) && 
             as.numeric(difftime(Sys.Date(), as.POSIXct(input$date) )) <= 30 &&
             input$hist
)

在第2种情况下,您应该谨慎输入类型。例如,文本输入的默认值为'',因此永远不会为NULL