我正在编写一个应用程序(发光),需要检查您是否要使用特定数据,为此您需要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 = TRUE
。 input$date
也是来自UI的输入,它是一个日期。如果您不熟悉RShiny,则反应式仅表示在用户界面上发生某些更改时会自动更新此值。
我尝试编写不同的if / else语句,并使用除 TRUE / FALSE 以外的其他变量值等。
错误:缺少
TRUE/FALSE
的值
答案 0 :(得分:1)
问题是输入的初始化阶段。此时input$date
和input$hist
等于NULL
。由于NULL
既不是TRUE
也不是FALSE
,因此出现错误。有两种方法:
req(input$x)
函数。仅在第一次更改input$x
之后,才会对此进行评估。在您的情况下,您还必须在第二种情况下使用req()。recent
和input$date
为input$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