2016-05-06 7 views
0

データファイルは変更されないが、モデルパラメータが変更された場合、光沢のあるサーバー側で一度データファイルをアップロードする(ユーザーがアップロードする)方法はありますか?つまり、ファイルがアップロードされ、Rコードで読み込まれるとき、ユーザーがWeb UIを通じてモデルパラメータを変更するたびに、コードはデータファイルをリロードしません。私は光り輝くRにとても新しいです。私は例を見つけることができませんでした。ありがとう!ファイルをRシャイニーサーバの端に1回だけロードする

答えて

1

シャイニーはかなりスマートです。

いつ何かをやり直す必要があるときとしていないときは分かっています。これはShinyがファイルをリロードする必要がないことを知っている場合で、パラメータを変更してもリロードを促さない。

library(shiny) 

options(shiny.maxRequestSize = 9*1024^2) 

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


    data <- eventReactive(input$go, { 
    validate(
     need(input$file1, "Choose a file!") 
    ) 

    inFile <- input$file1 

    read.csv(inFile$datapath, header = input$header, 
      sep = input$sep, quote = input$quote) 
    }) 

    output$plot <- renderPlot({ 
    set <- data() 
    plot(set[, 1], set[, 2] * input$param) 
    }) 
}) 


ui <- shinyUI(fluidPage(
    titlePanel("Uploading Files"), 
    sidebarLayout(
    sidebarPanel(
     fileInput('file1', 'Choose file to upload', 
       accept = c(
        'text/csv', 
        'text/comma-separated-values', 
        'text/tab-separated-values', 
        'text/plain', 
        '.csv', 
        '.tsv' 
       ) 
    ), 
     tags$hr(), 
     checkboxInput('header', 'Header', TRUE), 
     radioButtons('sep', 'Separator', 
        c(Comma=',', 
        Semicolon=';', 
        Tab='\t'), 
        ','), 
     radioButtons('quote', 'Quote', 
        c(None='', 
        'Double Quote'='"', 
        'Single Quote'="'"), 
        '"'), 
     tags$hr(), 
     p('If you want a sample .csv or .tsv file to upload,', 
     'you can first download the sample', 
     a(href = 'mtcars.csv', 'mtcars.csv'), 'or', 
     a(href = 'pressure.tsv', 'pressure.tsv'), 
     'files, and then try uploading them.' 
    ), 
     actionButton("go", "Load File and plot"), 
     sliderInput("param", "Parameter", 0, 1, value = 0.1, step = 0.1, animate = TRUE) 

    ), 
    mainPanel(
     tableOutput('contents'), 
     plotOutput("plot") 
    ) 


) 
)) 

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

ありがとうございます。私は考えを得ると思う。しかし、あなたのコードはeventReactiveコールを持っていないようです。 – athlonshi

関連する問題