Блестящий быстро показывает выбранный вход, но возвращается к первому входу
Все загружается отлично, но когда я выбираю Watts, Volts или Amps, диаграмма Dygraph быстро возвращается к графическому отображению канала сканирования. Скоро отображаются диаграммы мощности, напряжения и усилителя, но затем они возвращаются к входу "Сканирование".
Любые идеи о том, как я могу заставить его перестать возвращаться к каналу сканирования и сохранить его на канале, который я выбираю?
Мой набор данных здесь для загрузки. ui.R
shinyUI(fluidPage(
navbarPage("Engineering Data",
tabPanel("Upload your Own File:",
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose CSV File',
accept=c('text/csv',
'text/comma-separated-values,text/plain',
'.csv')),
tags$hr(),
checkboxInput('header', 'Header', TRUE),
radioButtons('sep', 'Separator',
c(Comma=',',
Semicolon=';',
Tab='\t'),
','),
radioButtons('quote', 'Quote',
c(None='',
'Double Quote'='"',
'Single Quote'="'"),
'"'),
selectInput("uploadChannels", label = "Choose Channel",
choices = NULL)
),
mainPanel(
dygraphOutput('graph')
))
)
)))
server.R
output$graph <- renderDygraph({
uploadedFile <- input$file1
if (is.null(uploadedFile))
return(NULL)
# Clean up the loaded CSV File, convert Time column to a Time Object for Dygraph.
uploadedFile <- read.csv(uploadedFile$datapath, header=input$header, sep=input$sep,
quote=input$quote)
uploadedFile$Time <- as.POSIXct(strptime(uploadedFile$Time,"%H:%M:%S"))
uploadedFile$ctime <- strptime(paste(uploadedFile$Time), "%Y-%m-%d %H:%M:%S")
# Update the SelectInput and store the value in component5 to be used in the graph.
observeEvent(uploadedFile, {
updateSelectizeInput(session, 'uploadChannels', choices = names(uploadedFile))
})
selectedInput <- input$uploadChannels
component5 <- uploadedFile[, selectedInput]
xts(component5, uploadedFile$Time) %>%
dygraph()
})
})
@Батаничек был прав. Мне пришлось изменить server.R
и теперь он работает!
Обратите внимание, что я добавил второй ввод, поэтому команды удваиваются.
uploadedFile1 <- reactive({
validate(need(input$file1, FALSE)) # This is like a better "if (is.null(input$file1)) return(NULL)"
uf1 <- read.csv(input$file1$datapath)
})
uploadedFile2 <- reactive({
validate(need(input$file2, FALSE)) # This is like a better "if (is.null(input$file2)) return(NULL)"
uf2 <- read.csv(input$file2$datapath)
})
observeEvent(uploadedFile1(), {
updateSelectizeInput(session, 'uploadChannels1', choices = names(uploadedFile1()))
})
observeEvent(uploadedFile2(), {
updateSelectizeInput(session, 'uploadChannels2', choices = names(uploadedFile2()))
})
output$graph <- renderDygraph({
# Clean up the loaded CSV File, convert Time column to a Time Object for Dygraph.
uploadedFile1 <- uploadedFile1()
uploadedFile2 <- uploadedFile2()
uploadedFile1$Time <- as.POSIXct(strptime(uploadedFile1$Time,"%H:%M:%S"))
uploadedFile2$Time <- as.POSIXct(strptime(uploadedFile2$Time,"%H:%M:%S"))
uploadedFile1$ctime <- strptime(paste(uploadedFile1$Time), "%Y-%m-%d %H:%M:%S")
uploadedFile2$ctime <- strptime(paste(uploadedFile2$Time), "%Y-%m-%d %H:%M:%S")
# Update the SelectInput and store the value in component5 to be used in the graph.
selectedInput1 <- input$uploadChannels1
selectedInput2 <- input$uploadChannels2
component5 <- uploadedFile1[, selectedInput1]
component6 <- uploadedFile2[, selectedInput2]
cbinded <- cbind(component5, component6)
xts(cbinded, uploadedFile1$Time, uploadedFile2$Time) %>%
dygraph()
})