如何在 shiny R 的 daterangeinput 中只选择星期一?

How to make only mondays selectable in daterangeinput in shiny R?

有没有办法模仿 dateInput 中的 daysofweekdisabled?

我希望人们 select 只有星期一。

遗憾的是,函数 dateRangeInput 没有 built-in 功能。但是,可以创建一个挂钩来评估给定输入是否有效,即开始日期和结束日期都在星期一:

library(shiny)
library(lubridate)

ui <- fluidPage(
  dateRangeInput("daterange1", "Date range:",
    start = "2001-01-01",
    end   = "2010-12-31"
  ),
  textOutput("daterange1_valid")
)

server <- function(input, output, session) {
  output$daterange1_valid <- renderText({
    is_valid <- all(input$daterange1 %>% map_lgl(~ wday(.x, label = TRUE) == "Mon"))

    ifelse(is_valid, "valid", "not valid. Start and end must be on a Monday!")
  })
}

shinyApp(ui, server)

另一种方法是只使用两个 dateInput 元素。这将允许您在选择器中为星期一灰色以外的日子着色。