Используйте оба значения dateRangeInput() для подмножества набора данных в блестящем приложении

#r #shiny

#r #блестящий

Вопрос:

У меня есть блестящее приложение ниже, в котором я хочу подмножить фрейм данных в соответствии с датами, основанными на a dateRangeInput() . Проблема в том, что я не могу использовать оба его значения одновременно для подмножества моего набора данных, и на графике ничего не отображается. Я мог бы принять альтернативу.

 library(shiny)
library(readxl)
library(shinydashboard)
library(plotly)

date<-c(as.Date("2020-09-15", "%Y-%m-%d"),as.Date("2020-09-14", "%Y-%m-%d"),
        as.Date("2020-09-13", "%Y-%m-%d"),as.Date("2020-09-12", "%Y-%m-%d"))
value<-c(5,6,7,8)
value2<-c(0.2,0.3,0.4,0.5)
df<-data.frame(date,value,value2)



ui <- dashboardPage(
    dashboardHeader(title = "Dashboard Demo"),
    dashboardSidebar(
        
        sidebarMenu(
            dateRangeInput('dateRange',
                           label = paste('Date range input'),
                           start = min(df$date) 1, end = max(df$date),
                           min = min(df$date), max = max(df$date),
                           separator = " - ", format = "dd/mm/yy",
                           startview = 'year'
            )
            
        )
    ),
    dashboardBody(
        plotlyOutput("plot")
    )
)

server <- shinyServer(function(input, output, session) {
    output$plot<-renderPlotly({
        
        TATd <-subset(df, date>=input$dateRange[1]amp;date<=input$dateRange[2])
        
        # Minimal theme   blue fill color
        p<-ggplot(data=TATd, aes(x=date, y=value))  
            geom_bar(stat="identity", fill="steelblue") 
            theme_minimal()  labs(x = "Date of Specimen Collection",y="Total Tests per Day")
        ggplotly(p)
        
        
    })
})

shinyApp(ui, server)
  

Комментарии:

1. Похоже, связано с github.com/rstudio/shiny/issues/2703

2. значит, решения нет?

Ответ №1:

С вашими образцами данных устранена проблема с использованием одного и того же значения для обоих start и min при dateRangeInput инициализации

   dateRangeInput('dateRange',
                 label = paste('Date range input'),
                 start = min(df$date), end = max(df$date),
                 min = min(df$date), max = max(df$date),
                 separator = " - ", format = "dd/mm/yy",
                 startview = 'year'
  )

Package  Version
Rcpp     1.0.5
cellranger   1.1.0
compiler     4.0.2
pillar   1.4.6
later    1.1.0.1
tools    4.0.2
digest   0.6.25
viridisLite  0.3.0
jsonlite     1.7.1
lifecycle    0.2.0
tibble   3.0.3
gtable   0.3.0
pkgconfig    2.0.3
rlang    0.4.7
rstudioapi   0.11
crosstalk    1.1.0.1
yaml     2.2.1
fastmap  1.0.1
httr     1.4.2
withr    2.3.0
dplyr    1.0.2
sourcetools  0.1.7
htmlwidgets  1.5.2
generics     0.0.2
vctrs    0.3.4
grid     4.0.2
tidyselect   1.1.0
glue     1.4.2
data.table   1.13.0
R6   2.4.1
tidyr    1.1.2
purrr    0.3.4
magrittr     1.5
scales   1.1.1
promises     1.1.1
htmltools    0.5.0
ellipsis     0.3.1
mime     0.9
xtable   1.8-4
colorspace   1.4-1
httpuv   1.5.4
labeling     0.3
lazyeval     0.2.2
munsell  0.5.0
crayon   1.3.4


other attached packages:
[1] plotly_4.9.2.1       ggplot2_3.3.2        shinydashboard_0.7.1 shiny_1.5.0       

R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
  

Комментарии:

1. работает ли это для вас? потому что я не вижу никаких изменений. Я все еще не вижу графика

2. странно, что у меня это не работает, даже если я открываю его в браузере

3. У меня точно такие же версии

4. использование RStudio в Windows 10 pro 64 бит

5. Этот код работает нормально. Не уверен, в чем проблема. Возможно, вам нужно перезагрузить компьютер или перезапустить RStudio.