R Shiny:req() *多个对象/值中的至少一个

mb1*_*127 5 validation r shiny

抱歉,如果这很简单,但我无法找到答案。我是使用 validate/req 的新手。在我闪亮的应用程序中,我目前有:

myfx <- reactive({
    req(c(input$value, data1(), data2()) )
    ...
})
Run Code Online (Sandbox Code Playgroud)

这确保在执行之前所有值都是真实的。但我想要的是需要输入和至少一个数据值。我怎样才能让这样的事情发挥作用?

myfx <- reactive({
        req(c(input$value, any_of(data1(), data2())) )
        ...
    })
Run Code Online (Sandbox Code Playgroud)

r2e*_*ans 11

req只要它的参数解析为“真实”,它就会起作用,但它总是假设“AND”。要获得“OR”,我认为您需要手动接管一些测试,也许类似于:

myfx <- reactive({
  req(
    isTruthy(input$value),
    isTruthy(data1()) || isTruthy(data2())
  )
  ...
})
Run Code Online (Sandbox Code Playgroud)

(也就是说shiny::isTruthy,如果您想了解更多相关信息。目前版本为 1.6.0,我认为该功能不会很快发生变化。)