r - 使用日期范围更改服务器 R Shiny 中的直方图范围

标签 r shiny date-range

我正在尝试使用日期范围函数来更改用于在 R Shiny 中显示直方图的数据。我有一些不完整的代码,因为我无法弄清楚如何在服务器功能中对此进行编码。请参阅下面的最小代码示例以及我认为一些代码应该放在哪里。 :

library(shiny)
set.seed(123)


N<- 500
M<-56

EF<- matrix( rnorm(N*M,mean=23,sd=3), N, M)
WM<- matrix( rnorm(N*M,mean=20,sd=3), N, M)
DP<- matrix( rnorm(N*M,mean=25,sd=3), N, M)

Date <- seq(as.Date("2018-01-01"), as.Date("2018-02-25"), by="days")
Date <- as.POSIXct(Date, format = "%Y-%m-%d %H:%M")

ui <- fluidPage(
  titlePanel(code(strong("Measures"), style = "color:black")),
  sidebarLayout(
    sidebarPanel(
      strong("Tools:"),
      selectInput("Test", 
                  label = "Choose a measure to display",
                  choices = c("EF", 
                              "WM",
                              "DP"
                  ),
                  selected = "EF"),

      dateRangeInput("DateRange", label= "Date Range:", start ="2018-01-01", end = "2018-02-25")),
    mainPanel(
      code(strong("Study Readout")),
      plotOutput("distPlot")
    ))
)


server <- function(input, output) {

  filterData <- reactive({
      x    <- switch(input$Test, 
                     "EF" = EF,
                     "WM" = WM, 
                     "DP" = DP)
      return(x)

  })

  output$distPlot <- renderPlot({
    x <-filterData()

    DateRange <- #????

      hist(x, #????)
  })
}


# Run that shit ----
shinyApp(ui = ui, server = server)

最佳答案

您可以根据日期范围对矢量 x 进行子集化,注释掉到 POSIXct 的转换并像这样填充空白。

library(shiny)
set.seed(123)

N<-500
M<-56

EF<- matrix( rnorm(N*M,mean=23,sd=3), N, M)
WM<- matrix( rnorm(N*M,mean=20,sd=3), N, M)
DP<- matrix( rnorm(N*M,mean=25,sd=3), N, M)

Date <- seq(as.Date("2018-01-01"), as.Date("2018-02-25"), by="days")
#Date <- as.POSIXct(Date, format = "%Y-%m-%d")

ui <- fluidPage(
  titlePanel(code(strong("Measures"), style = "color:black")),
  sidebarLayout(
    sidebarPanel(
      strong("Tools:"),
      selectInput("Test", 
                  label = "Choose a measure to display",
                  choices = c("EF", 
                              "WM",
                              "DP"
                  ),
                  selected = "EF"),

      dateRangeInput("DateRange", label= "Date Range:", start ="2018-01-01", end = "2018-02-25")),
    mainPanel(
      code(strong("Study Readout")),
      plotOutput("distPlot")
    ))
)

server <- function(input, output) {

  filterData <- reactive({
    x    <- switch(input$Test, 
                   "EF" = EF,
                   "WM" = WM, 
                   "DP" = DP)
    return(x)

  })

  output$distPlot <- renderPlot({
    x <-filterData()
    hist(x[Date >= min(input$DateRange) & Date <= max(input$DateRange)])
  })
}

shinyApp(ui = ui, server = server)

关于r - 使用日期范围更改服务器 R Shiny 中的直方图范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49059909/

相关文章:

r - 为什么实际的世代数与 R 中的遗传算法不一样

javascript - Angular JS ng-table日期范围过滤器问题

html - 将背景图像添加到 Shiny 中的特定 tabPanel

R Shiny - 了解更新相互依赖的输入时观察和观察事件之间的区别

r - 在 Shiny 应用程序中逐步浏览 n 个屏幕或轮播

sql - 如何在postgresql中对重叠数据进行汇总?

postgresql - 差距和岛屿 - 使用 Postgresql 获取一个日期范围内的失业日期列表

r - 在 R 中创建等同于 Excel 的 =PERCENTRANK.EXC 函数?

arrays - 如何简单地折叠(求和)R 中数组中的某些行

r - 在 R ggplot 中,有没有办法在条形之间创建没有填充颜色和垂直边框的直方图?