2016-10-23 9 views
0

これらのボタンをクリックすると、開始時間と終了時間を節約するための光沢のあるアプリケーションを作成しました。私はStartEndDownloadのボタンを持っていますが、これはStartEndのボタンをクリックしてからDownloadボタンをクリックすると、ファイルを.csvに保存した時間を節約するためのものです。しかし、それはダウンロードボタンのクリック時間を節約しています。別の時間を適切に保存してください。光沢のあるアクションボタンをクリックして時間を節約する

library(shiny) 

shinyUI(fluidPage(
    titlePanel("Header"), 
    sidebarLayout(
    sidebarPanel(
     actionButton("start", "Start"), 
     tags$br(), 
     actionButton("end", "End"), 
     tags$br(), 
     downloadButton("downloadData", "Download") 
    ), 

    mainPanel(

    ) 
) 
)) 

shinyServer(function(input, output) { 

    startTime <- eventReactive(input$start,{ 
    Sys.time() 
    }) 

    endTime <- eventReactive(input$end,{ 
    Sys.time() 
    }) 


    data <- reactive({data.frame(start = startTime(), 
           end = endTime())}) 


    output$downloadData <- downloadHandler(
    filename = function() { 
     "download.csv" 
    }, 
    content = function(file) { 
     write.csv(data(), file, row.names = F) 
    } 
) 

}) 

答えて

0

グローバル変数を使用すると効果があります。下記の例(セッションごとのグローバル変数を使用するように編集されています)。

library(shiny) 

ui <- shinyUI(fluidPage(
    titlePanel("Header"), 
    sidebarLayout(
    sidebarPanel(
     actionButton("start", "Start"), 
     tags$br(), 
     actionButton("end", "End"), 
     tags$br(), 
     downloadButton("downloadData", "Download") 
    ), 

    mainPanel(

    ) 
) 
)) 

server <- shinyServer(function(input, output) { 

    starttime <- NULL 
    endtime <- NULL 

    observeEvent(input$start, { 
    starttime <<- Sys.time() 
    }) 

    observeEvent(input$end, { 
    endtime <<- Sys.time() 
    }) 

    output$downloadData <- downloadHandler(
    filename = function() { 
     "download.csv" 
    }, 
    content = function(file) { 
     data <- data.frame(start=starttime, end=endtime) 
     write.csv(data, file, row.names = F) 
    } 
) 

}) 

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

shinyappでグローバル変数を使用していないのは悪いことですか?このshinyappが複数のユーザーによって使用されることを意図していて、このグローバル変数が異なるセッション間で共有されるため、このアプリケーションの目的とするアプリケーションに影響はありません。 – SBista

+0

@SBistaはい、セッションごとのグローバル変数を使用する場合は、サーバー関数のスコープ内にある必要があります。私は私の答えを編集しました。グローバル変数自体は悪い習慣ではありません。 –

関連する問題