如何连接你自己数据的闪亮日期?

how to connect your own data's date in shiny?

我是 R shiny 新手

我正在制作日期输入并尝试连接我自己的数据。

我有称为性能的数据,这里是数据示例

日期 A B 2020-08-01 10 100 2020-09-01 15 250 2020-10-01 16 300 2020-11-01 20 350

我希望我的数据集的日期可以是被动的,但我不太明白我该怎么做。

这是我目前得到的代码。 当我 运行 此代码时,会出现日期范围 select 栏,但如果我按特定日期,它就不起作用。

  ui <- fluidPage(

  title = "Performance",

   dateRangeInput("daterange1", "Date range:",
             start = "2020-08-01",
             end   = "2020-11-01"),

  sidebarLayout(

    sidebarPanel(

      conditionalPanel(

        'input.dataset === "performance"',

        checkboxGroupInput("show_vars", "Columns in diamonds to show:",

                           names(performance), selected = names(performance))

      ),

    mainPanel(

      tabsetPanel(

        id = 'dataset',

        tabPanel("diamonds", DT::dataTableOutput("mytable1"))

        
      )

    )

  )

)

 

server <- function(input, output) {

  filteredData <- reactive({
  req(input$dateRange)
  peformance[peformance$date>= input$dateRange[1] & peformance$date <= input$dateRange[2],]


})



  performance2 = performance[sample(nrow(performance), 1000), ]

  output$mytable1 <- DT::renderDataTable({

    DT::datatable(performance2[, input$show_vars, drop = FALSE])

  })
  

}

shinyApp(ui, server)

希望这是一个可以帮助您的工作示例。

为了使这项工作正常进行,需要进行一些更正。

首先,dateRangeInputui id 是 daterange1 - 我做了这个 daterange 并确保在 server 中是一致的。请注意,这是区分大小写的,因此带有大写“R”的 dateRange 不适用于 daterange.

我遗漏了条件面板。这可以包括在内,具体取决于您希望行为具有的内容。目前,它永久隐藏了您的 checkBoxGroupInput.

server 中,您的 reactive 表达式应该在日期更改时调用。在这种情况下,它将根据您的日期和样本进行子集化(我试图尽可能多地留在您的代码中)。

要将结果数据合并到您的 datatable 中,您可以将 reactive 表达式称为 filteredData()

library(shiny)

ui <- fluidPage(
  title = "Performance",
  dateRangeInput("daterange", "Date range:",
                 start = "2020-08-01",
                 end   = "2020-11-01"),
  sidebarLayout(
    sidebarPanel(
        checkboxGroupInput("show_vars", "Columns in diamonds to show:",
                           names(performance), selected = names(performance)
                           )
    ),
    mainPanel(
      tabsetPanel(
        id = 'dataset',
        tabPanel("diamonds", DT::dataTableOutput("mytable1"))
      )
    )
  )
)
  
server <- function(input, output) {
  
  filteredData <- reactive({
    req(input$daterange)
    df <- performance[performance$Date >= input$daterange[1] &
                      performance$Date <= input$daterange[2], ]
    df[sample(nrow(df), 1000, replace = T), ]
  })
  
  output$mytable1 <- DT::renderDataTable({
    DT::datatable(filteredData()[, input$show_vars, drop = FALSE])
  })
  
}

shinyApp(ui, server)