2016-05-09 3 views
0

Я бы спросил. Does Shiny действительно нравится всегда обновлять код после ввода? Сначала я код этого в УИ:Блестящий R, всегда обновляющий код после ввода

box(##title="Quality Attributes", 
       selectInput("att_ViewChart", width = '100%',label="Quality Attributes", 
          ##multiple = TRUE, 
          choices=list(
          "-", 
          "Suitability", 
          "Security", 

          ) 
       ) 
     ), 
dataTableOutput("tabelstatus") 

Тогда я код этот сервер:

server = function(input, output) { 
withProgress(message = "AAAAA",{ 
     DateStatus_Sui<-c(1,2,3,4,NA,5,6,NA,7) 
     TimeStatus_Sui<-c(11,22,33,44,NA,55,66,NA,88) 
     status_Sui<-c(11,22,44,55,66,77,88) 
     jumlah<-7 
    }) 
    if(input$att_ViewChart=="Suitability"){ 
     Date<-DateStatus_Sui[!is.na(DateStatus_Sui)] 
     Time<-TimeStatus_Sui[!is.na(TimeStatus_Sui)] 
     Status<-status_Sui 
     Observation<-1:jumlah 
     #output 

     tabelstatus<-data.frame(Observation,Date,Time,Status) 
     output$tabelstatus<-renderDataTable(tabelstatus) 
} 

Я надеюсь, что, когда я запустить приложение. Блестящий обработает код (отображается индикатором выполнения «AAAAA»). И после этого, если я выберу подходящий, он сделает немного больше процесса, а затем покажет таблицу. Но я обнаружил, что индикатор выполнения снова появляется. Кажется, он снова запускает код с самого начала. Как это исправить? Спасибо

+0

Вы можете разместить весь ваш 'server.R'? или, по крайней мере, сделать полный воспроизводимый пример? – SymbolixAU

+0

@Symbolix - это воспроизводимый код. реальный гораздо сложнее. разве это не работает? – Elbert

+0

«воспроизводимый» означает, что я могу просто скопировать и вставить свой код в среду R, и он будет работать. Я не могу сделать это с вашим кодом. Не видя всей вашей «server.R», сложно диагностировать вашу проблему. Я бы предположил, что у вас нет вашего 'if (input $ att_ViewChart ...)' внутри выражения 'реактивное()'. Либо это, либо вам нужно «изолировать()' условие 'if (input $ ...)'. – SymbolixAU

ответ

2

В Наедине из полностью воспроизводимого примера, я предполагаю, что это то, что вы пытаетесь сделать (то есть, сделать таблицу reactive в соответствии с вашими input$att_ViewChart):

library(shiny) 
library(shinydashboard) 

ui <- dashboardPage(
    dashboardHeader(), 
    dashboardSidebar(), 
    dashboardBody(
     box(selectInput("att_ViewChart", width = '100%',label="Quality Attributes", 
            choices=c("-","Suitability","Security"))), 
     dataTableOutput("tablestatus") 
    ) 
) 

server = function(input, output) { 

    withProgress(message = "AAAAA",{ 
     DateStatus_Sui<-c(1,2,3,4,NA,5,6,NA,7) 
     TimeStatus_Sui<-c(11,22,33,44,NA,55,66,NA,88) 
     status_Sui<-c(11,22,44,55,66,77,88) 
     jumlah<-7 
    }) 

    ## make your table reactive on `input$att_ViewChart` 
    output$tablestatus <- renderDataTable({ 

     if(input$att_ViewChart=="Suitability"){ 

      Date<-DateStatus_Sui[!is.na(DateStatus_Sui)] 
      Time<-TimeStatus_Sui[!is.na(TimeStatus_Sui)] 
      Status<-status_Sui 
      Observation<-1:jumlah 

      tablestatus <- data.frame(Observation,Date,Time,Status) 
     }else{ 
      tablestatus <-data.frame() 
     } 
     return(tablestatus) 
    }) 
} 

shinyApp(ui = ui, server = server) 
+0

Да, это так. Но когда я выбираю «Пригодность», индикатор выполнения снова появляется, как и весь код с начала – Elbert

+0

@ Elbert индикатор выполнения не перезагружается - вы уверены, что скопировали мой код? – SymbolixAU

+0

Я копирую его в реальный. И индикатор выполнения перезагрузился. Я делаю это в новом файле. это не так. Тогда я проверю другие части. Кстати, если есть файл загружаемого файла перед этим кодом, это влияет на что-либо? – Elbert

Смежные вопросы