【发布时间】:2016-08-31 14:55:23
【问题描述】:
我在名为 sampledata.csv 的 csv 中有以下简单数据,我在 shinydashboard 应用程序中使用了这些数据。
date category
1/1/2001 1M
1/2/2001 1M
1/3/2001 1M
1/4/2001 1M
1/5/2001 1M
1/1/2002 2M
1/2/2002 2M
1/3/2002 2M
1/4/2002 2M
1/5/2002 2M
我在app.R 文件中有以下shinydashboard 代码:
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(id='tab',
menuItem('Tab 1', tabName='tab1'),
menuItem('Tab 2', tabName='tab2')
)
),
dashboardBody(
tabItems(
tabItem(tabName='tab1',
uiOutput('daterange')
),
tabItem(tabName='tab2',
verbatimTextOutput('range')
)
)
)
)
sample <- read.csv('sampledata.csv')
sample$date <- as.Date(sample$date, '%m/%d/%Y')
server <- function(input, output, session) {
#Observe which tab is selected
observe({
print(input$tab)
})
subdata <- reactive({
#Subset to include only sample$category=='1M' when any tab is selected
if(input$tab=="tab1" | input$tab=="tab2"){
sample <- sample[which(sample$category=='1M'),]
}
return(sample)
})
output$daterange <- renderUI({
#Set daterange to go from min to max of subdata()
dateRangeInput(inputId='daterange',
label='Select Period',
min=min(subdata()$date), max=max(subdata()$date)
)
})
output$range <- renderPrint(input$daterange)
}
shinyApp(ui, server)
我的问题是在使用该应用程序时,如果我从 tab1 更改为 tab2,daterange 将被重置。因此,如果在tab1 更改开始或结束日期,然后单击tab2,它将不再保留我选择的日期。在上面的代码中,我知道subdata 中的if 语句似乎是多余的,如果我摆脱它,我的问题就会消失。但实际上我有一个更复杂的应用程序,子数据会根据选择的选项卡而改变。有没有办法在更改标签时保留if 语句但不重置daterange?
【问题讨论】:
标签: r shiny shinydashboard