Добро пожаловать в SO!
Я немного очистил ваш пользовательский интерфейс.
Пожалуйста, проверьте следующее:
# Create files ------------------------------------------------------------
csvpath <- "./xts_folder/"
if(!dir.exists(csvpath)){
dir.create(csvpath)
}
DF <- data.frame(stringsAsFactors=FALSE,
timestampUTC = c("1/1/2006 0:50", "1/1/2006 1:50", "1/1/2006 2:50",
"1/1/2006 3:50", "1/1/2006 4:50", "1/1/2006 5:50",
"1/1/2006 6:50", "1/1/2006 7:50", "1/1/2006 8:50", "1/1/2006 9:50",
"1/1/2006 10:50", "1/1/2006 11:50", "1/1/2006 12:50",
"1/1/2006 13:50", "1/1/2006 14:50", "1/1/2006 15:50",
"1/1/2006 16:50", "1/1/2006 17:50"),
max = c(0.7, 6.4, 7.5, 0.3, 0, 0.2, 0.7, 1.5, 0.5, 0.4, 0.3, 1.6,
0.7, 1.6, 0.6, 0.2, 0.4, 0.7)
)
DF
write.csv(DF, file = file.path(csvpath, "/2006_RW.csv"), row.names = FALSE, quote = FALSE)
DF$timestampUTC <- gsub("2006", "2007", DF$timestampUTC)
DF$max <- runif(18)
write.csv(DF, file = file.path(csvpath, "/2007_RW.csv"), row.names = FALSE, quote = FALSE)
DF$timestampUTC <- gsub("2007", "2008", DF$timestampUTC)
DF$max <- runif(18)
write.csv(DF, file = file.path(csvpath, "/2008_RW.csv"), row.names = FALSE, quote = FALSE)
DF$timestampUTC <- gsub("2008", "2009", DF$timestampUTC)
DF$max <- runif(18)
write.csv(DF, file = file.path(csvpath, "/2009_RW.csv"), row.names = FALSE, quote = FALSE)
# App ---------------------------------------------------------------------
library(shiny)
library(shinydashboard)
library(dygraphs)
library(lubridate)
library(xts)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(selectInput(
"period",
"Choose Year:",
c(
"2006" = "2006",
"2007" = "2007",
"2008" = "2008",
"2009" = "2009"
)
)
),
dashboardBody(
wellPanel(
width = "100%",
height = "100%",
dygraphOutput("PerYear")
)
)
)
server <- function(input, output, session) {
output$PerYear <- renderDygraph({
reading_csv <- function (year) {
csvpath <- "./xts_folder/"
y <- read.csv(paste0(csvpath, year, "_RW.csv"), header = TRUE, sep = ",")
ytime <- mdy_hm(y[["timestampUTC"]], tz = "UTC")
y_xts <- xts(y, order.by = ytime)
ts.sn.year <- dygraph(y_xts) %>% dyRangeSelector()
return(ts.sn.year)
}
if (input$period == "2006") {
y <- 2006
pyear <- reading_csv(year = y)
pyear
}
else if (input$period == "2007") {
y <- 2007
pyear <- reading_csv(year = y)
pyear
}
else if (input$period == "2008") {
y <- 2008
pyear <- reading_csv(year = y)
pyear
}
else if (input$period == "2009") {
y <- 2009
pyear <- reading_csv(year = y)
pyear
}
})
}
shinyApp(ui, server)
Однако я бы 'рекомендовал прочитать вCSV-файл каждый раз, когда вы хотите обновить сюжет. Было бы лучше прочитать их только тогда, когда они необходимы.