簡體   English   中英

R:Shiny - 更新dateRangeInput的開始和結束

[英]R: Shiny - update dateRangeInput start and end

我在RStudio中使用'閃亮'。

我希望使用數據集的最小值和最大值更新dateRangeInput小部件的預選日期。
當我嘗試下面的代碼(僅針對開始日期進行簡化)時,開始日期不會顯示在日期范圍小部件的左側框中:相反,該框顯示為空白(但它實際上設置為今天的日期 - 單擊時在空盒子上,顯示今天日期的日歷)。
ui.r:dateRangeInput(“dates”,label =“Date range”,start ='mydatestart',end ='2014-05-06')

實際選擇最小日期,因為它在使用時顯示
ui.r:textOutput('mydatestart')

這是一個可重復的例子:
ui.R

library(shiny)

shinyUI({
  sidebarPanel(
  dateRangeInput("dates", label = "Date range", start='mydatestart', end = '2014-05-06'),
  textOutput('mydatestart')
  )
})

server.R

 
shinyServer(function(input, output) {
  mydate<-c("2013-04-24", "2013-04-25", "2013-04-26", "2013-04-27", "2013-04-28", "2013-04-28", "2013-04-29", "2013-04-30")
  output$mydatestart<-renderText(min(mydate))
})

使用輸出$ mydatestart <-renderText(as.Date(min(mydate)))會產生同樣的問題。

你知道為什么會這樣嗎?
謝謝,Yvan

  1. 你不能將像mydatestart這樣的字符串文字作為參數傳遞給dateRangeInput因為它會解釋為 - 一個字符串 - 這就是start字段為空的原因。 你需要給它一個合法的價值。
  2. 您的shinyUI調用中缺少一些關鍵功能,如下所示。
  3. 將全局數據對象放在一個global.R文件中,用於閃亮的應用程序,而不是在shinyServer函數中定義它們,這是更慣用的。

ui.R

library(shiny)

shinyUI({
  ## fluidPage(...)
  fluidPage(
    ## sidebarLayout(...)
    sidebarLayout(
      sidebarPanel(
        dateRangeInput(
          "dates", label = "Date range",
          start = min(mydate),
          end = '2014-05-06'),
        uiOutput("mydatestart2")
      ),

      mainPanel(textOutput('mydatestart'))
    )
  )

})

server.R

library(shiny)

shinyServer(function(input, output) {
  # not accessable in UI
  output$mydatestart <- renderText(min(mydate))
  # accessable in UI
  output$mydatestart2 <- renderUI({
    dateRangeInput(
      "dates2",
      label = "Reactive Start Date",
      start = as.Date(input$dates[1]) + 7,
      end = as.Date(input$dates[1]) + 14
    )
  })
})

global.R

mydate <- c("2013-04-24", "2013-04-25", "2013-04-26",
            "2013-04-27", "2013-04-28", "2013-04-28",
            "2013-04-29", "2013-04-30")

在此輸入圖像描述


在此輸入圖像描述

您可以將dateRangeInput放入server.R以便可以使用其中定義的任何對象作為參數:

library(shiny)

ui <- shinyUI({
    sidebarPanel(
        htmlOutput("selector"),
        textOutput('mydatestart')
    )
})

server <- shinyServer(function(input, output) {
    mydate<-c("2013-04-24", "2013-04-25", "2013-04-26", "2013-04-27", "2013-04-28", "2013-04-28", "2013-04-29", "2013-04-30")
    output$mydatestart<-renderText({min(mydate)})

    output$selector <- renderUI({

        dateRangeInput("dates", label = "Date range"
                       , start=min(mydate), end = '2014-05-06')

    })

})

shinyApp(ui = ui, server = server)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM