【问题标题】:R shiny reactive default date rangeR闪亮的反应默认日期范围
【发布时间】:2015-12-11 17:46:29
【问题描述】:

我的问题是关于具有高度可变日期范围的数据集。我想允许用户选择一个人/或事件,然后将 dateRangeInput 中的默认显示日期范围作为这些日期的最小值和最大值。我希望我从这些日期范围创建的初始图表受数据集该行中值的最小值和最大值的限制,这很容易。但是,我还需要用户能够随意更改这些以扩大范围或缩小范围。出于示例的目的,我创建了一个基本的代码/数据示例来显示我的困难。我一直在寻找其他答案,但事实证明我的搜索不成功。我从 r 帮助文件和 http://shiny.rstudio.com/tutorial/lesson4/ 以及该网站上的许多其他问题,但都无济于事。

ui.R

shinyUI(fluidPage(
  titlePanel("Default Date Range"),

  sidebarLayout(
    sidebarPanel(
      helpText("Problem initiating a date range default based on selected input"),

  selectInput("var", 
              label = "Choose a variable to display",
              choices = c("White", "Red", "Blue"),
              selected = "White"),


  dateRangeInput('dateRange2',
                 label = paste('Date range selection'),
                 start = textOutput("text1"),
                 end = Sys.Date(), 
                 separator = " - ", 
                 weekstart = 1
  )
),

mainPanel(
  textOutput("text1"),
  textOutput("text2")
 ) #end of main panel
 )#end of SidebarLayout
))#end of fluid page and UI

对于 server.r 文件

server.R

my.data <- t(data.frame(White = c(as.Date("2010-01-01"), as.Date(Sys.Date())),
                  Red = c(as.Date("1943-01-01"), as.Date("1960-05-19")),
                  Blue = c(as.Date("1975-01-01"), as.Date("2010-03-09"))))


shinyServer(function(input, output){

output$text1 <- renderText({ 
  paste("You have selected", input$var)
})



output$text2 <- renderText({ 
  my.row = match(input$var, rownames(my.data))
 paste("You need the default date range",
       my.data[my.row,1], "to", my.data[my.row,2])
    })

})

【问题讨论】:

  • 我不确定我是否理解正确,但是当您使用 min = Sys.Date() - 10, max = Sys.Date() + 10 时,您使用的是今天的日期减去 10 天。在您的 my.data 数据集中,最早的日期是 1943-01-01。想解释清楚一点吗?
  • 我从一个大的 ui.r 文件中复制了这个,并在那里复制了错误的行。我很抱歉,但我希望当有人选择“白色”例如 dateRangeInput 的自动填充默认值将从 2010 年 1 月 1 日到今天。但如果他们选择红色,则 dateRangeInput 默认值将从 1943 年到 1960 年。

标签: r shiny


【解决方案1】:

这个呢。更改您的 selectInput,您将看到日期范围将与颜色相应。

server.R
library(shiny)

my.data <- as.data.frame(t(data.frame(White = c(as.Date("2010-01-01"), as.Date(Sys.Date())),
                        Red = c(as.Date("1943-01-01"), as.Date("1960-05-19")),
                        Blue = c(as.Date("1975-01-01"), as.Date("2010-03-09")))))

my.data$V1 <- as.Date(my.data$V1)
my.data$V2 <- as.Date(my.data$V2)

shinyServer(function(input, output){


  output$inVar2 <- renderUI({

    my.row = match(input$var, rownames(my.data))

    dateRangeInput("inVar2", 
                   label = paste('Date range selection'),
                   start = my.data[my.row,1],
                   end = my.data[my.row,2], 
                   separator = " - ", 
                   weekstart = 1

                   )

  })


  output$text1 <- renderText({ 
    paste("You have selected", input$var)
  })



  output$text2 <- renderText({ 
    my.row = match(input$var, rownames(my.data))
    paste("You need the default date range",
          my.data[my.row,1], "to", my.data[my.row,2])
  })

})

对于 ui.R

ui.R
library(shiny)

shinyUI(fluidPage(
  titlePanel("Default Date Range"),

  sidebarLayout(
    sidebarPanel(
      helpText("Problem initiating a date range default based on selected input"),

      selectInput("var", 
                  label = "Choose a variable to display",
                  choices = c("White", "Red", "Blue"),
                  selected = "White"),


      uiOutput("inVar2")

    ),

    mainPanel(
      textOutput("text1"),
      textOutput("text2")
    ) #end of main panel
  )#end of SidebarLayout
))#end of fluid page and UI

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 2015-05-10
    • 1970-01-01
    • 2020-12-23
    • 2018-08-29
    • 2019-05-13
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多