我有一个闪亮的应用程序,有几个选项卡。
在第一个标签中,我从样本数据集中选择数据,并将其作为CSV文件保存到服务器。
在第二个标签中,我读取了CSV文件并进行了绘制。
我的问题: 当我回到第一个选项卡并更改数据并保存时,即使单击第二个选项卡名称,第二个选项卡中的图也不会刷新。
我不想刷新整个应用程序,因为它是一个很大的应用程序,加载是一个问题。
我还希望仅通过选择选项卡自动刷新选项卡。
感谢您的帮助。
这是一个简单的例子:
library(shiny)
dataDir <- "data"
load(file =file.path(dataDir, "dt_clean.RData"))
#dt_clean will load dt.clean object which has all the data, you can use any other data of your own to test the app
ui <- fluidPage(
mainPanel(
tabsetPanel(
tabPanel("tab1",
column(4,
selectInput(inputId = "months",
label = "Date:",
choices = c("Jan", "Feb", "Mar"),
selected = "Jan")
),
column(4,
radioButtons(inputId = "TS_which", label = "Which kind of data?",
choices = list("All months" = 1, "One month" = 2),
selected = 2)
),
column(4,
actionButton(inputId = "savedTS", label = "Save time series data")
)
),
tabPanel("tab2",
plotOutput("ts_plot_lof")
)
)
)
)
server <- function(input, output, session) {
saveData <- function(dtTS) {
#save csv and RData file for TS
if(input$TS_which == 2){
ptt <- input$months
in.dt <- which(dtTS$dt == ptt)
dt.clean.date <- dtTS[in.dt,]
}else{
dt.clean.date <- dtTS
}
fileName <- "ts_data.csv"
# Write the file to the local system
write.csv(
x = dt.clean.date,
file = paste0("responses/", fileName),
row.names = FALSE, quote = FALSE
)
}
loadData <- function() {
file.n <- paste0("responses/", "ts_data.csv")
dt_ts <- read.csv(file.n, stringsAsFactors = FALSE)
dt_ts
}
observeEvent(input$savedTS, {
dt.ts <- TSdata()
saveData(dt.ts)
})
TSdata <- reactive({
if(input$TS_which == 2){
ptt <- input$months
in.dt <- which(dt.clean$dt == ptt)
dt.clean.date <- dt.clean[in.dt,]
}else{
dt.clean.date <- dt.clean
}
return(dt.clean.date)
})
output$ts_plot_lof <- renderPlot({
plot(loadData())
})
}
shinyApp(ui, server)