";shinyFeedback“;“不适用于”;dateRangeInput“;成分

";shinyFeedback“;“不适用于”;dateRangeInput“;成分,r,shiny,R,Shiny,我试图测试“shinyFeedback”包的处理日期,但无法运行此测试代码 library(shiny) library(shinyFeedback) ui <- fluidPage( shinyFeedback::useShinyFeedback(), uiOutput("uo_numeric"), uiOutput("uo_date_range") ) server <- function(input, output, se

我试图测试“shinyFeedback”包的处理日期,但无法运行此测试代码

library(shiny)
library(shinyFeedback)

ui <- fluidPage(
  shinyFeedback::useShinyFeedback(),
  uiOutput("uo_numeric"),
  uiOutput("uo_date_range")
)

server <- function(input, output, session) {
  
  # Numeric
  output$uo_numeric <-  renderUI({
    numericInput("n", "Label", value = 10)
  }) 
  
  # Date range
  output$uo_date_range <- renderUI({
    dateRangeInput(
      "si_date_range", "Date range",
      start = as.Date(lubridate::now()),
      end = as.Date(lubridate::now()))
  })
  
  observeEvent(
    input$si_date_range, {
      print(!is.na(input$si_date_range))
      shinyFeedback::feedbackWarning(
        "si_date_range", !is.na(input$si_date_range),
        "Please select a valid dates")
    }
  )
  
  observeEvent(
    input$n, shinyFeedback::feedbackWarning(
      "n", input$n %% 2 != 0, "Please select an even number")  
  )
  
} # server

# Run the application 
shinyApp(ui, server)
库(闪亮)
图书馆(shinyFeedback)
ui这是我的版本

输入$si_date_range
应该是两个元素(第一个和第二个日期)的向量

您可以使用
is.na
查看输入的日期是否为空。
feedbackarning
还可以检查以确保您的第一次约会早于第二次约会

server <- function(input, output, session) {
  
  # Numeric
  output$uo_numeric <-  renderUI({
    numericInput("n", "Label", value = 10)
  }) 
  
  # Date range
  output$uo_date_range <- renderUI({
    dateRangeInput(
      "si_date_range", "Date range",
      start = as.Date(lubridate::now()),
      end = as.Date(lubridate::now()))
  })
  
  observeEvent(
    input$si_date_range, {
      print(input$si_date_range)
      shinyFeedback::feedbackWarning(
        "si_date_range", 
        as.Date(input$si_date_range[1]) > as.Date(input$si_date_range[2]) | 
                any(is.na(input$si_date_range)),
        "Please select valid dates")
    }
  )
  
  observeEvent(
    input$n, shinyFeedback::feedbackWarning(
      "n", input$n %% 2 != 0, "Please select an even number")  
  )
  
} # server

server下面是对这个问题的回答。


使用“remotes::install\u github(“merlinoa/shinyFeedback”)”重新安装包修复了我的问题。

输入$si\u date\u范围
应该是两个元素的向量(第一个和第二个日期)。您可以使用
is.na
查看输入的日期是否为空,还可以检查以确保您的第一个日期早于第二个日期,例如:
shinyFeedback::feedbackarning(“si_date_range”,as.date(输入$si_date_range[1])>as.date(输入$si_date_range[2])|任何(is.na(输入$si_date range)),“请选择有效日期”)
。。。那会有你想要的验证吗?谢谢,@Ben,但它不会向我显示警告。如果将“!is.na(输入$si_date_range)”替换为TRUE或FALSE-无happens@Ben是的,请:)我使用了shiny 1.5.0和shinyFeedback 0.1.0,但仍然不起作用。我尝试在这里使用TRUE as FALSE“shinyFeedback::feedbackarning(“si_date_range”,TRUE,“请选择有效日期”)——调用“feedbackarning”似乎有问题它也适用于“dateInput”元素,但不适用于“dateRangeInput”是的,当然。我做了并重新检查了它,然后重新启动了R会话。不适用于InputDateRange它适用于另一台使用Shining 1.4.0的机器,不适用于Shining 1.5.0。shinyFeedback是最新的。可能1.5.0 Shining不支持DateRange是的,很奇怪,我在aws web rstudio上用1.4.0 Shining测试了它-它似乎有效-但不适用于本地Mac 1.5.0 Shining