R Shiny中req()如何实现输入必填且多对象至少一个为真值
Shiny req组合条件校验实现方案
你可以通过拆分校验规则、配合isTruthy()函数实现需求,isTruthy()的真值判断逻辑和req()内部校验规则完全对齐,不会出现判定标准不一致的问题。
最简实现(和原有req行为一致,校验失败时中断执行无额外提示)
req()支持传入多个参数,只有所有参数都为真值时才会继续执行后续逻辑,刚好匹配你的校验规则:第一个参数校验input$value必填,第二个参数校验data1()和data2()至少有一个为真值。
myfx <- reactive({ req( input$value, isTruthy(data1()) || isTruthy(data2()) ) # 后续业务逻辑 ... })
带自定义错误提示的实现(适合需要给用户展示报错原因的场景)
如果需要在校验失败时给用户显示具体的错误提示,可以用validate()+need()组合:
myfx <- reactive({ validate( need(input$value, "请填写必填参数value"), need(isTruthy(data1()) || isTruthy(data2()), "data1和data2至少需要加载完成一个") ) # 后续业务逻辑 ... })
内容的提问来源于stack exchange,提问作者bikeactuary
相关产品推荐
相关产品推荐

