2016-04-14 21 views
2

Shinyアプリケーションがロードするはずのデータファイルがいくつかあります。これを達成するために、私はShinyFiles packageを使用しようとします。 ui.Rから:ShinyFilesでデータファイルをロードする

shinyFilesButton('file', 'Load Dataset', 'Please select a dataset', FALSE)

しかし、私は、ファイルをロードするためにserver.Rに入れすべきかについて不明な点です。私はファイルパスとすべてを得る方法を知っていますが、どこにload()コマンドを置くのですか? (server.Rから):

これは私が今しようとするものである

observeEvent(input$file, { 
inFile <- parseFilePaths(roots=roots, input$file) 
load(as.character(inFile$datapath), envir=.GlobalEnv) 
}) 

ファイルはsave.image()が保存したデータファイルであり、他のRスクリプトによって生成いくつかのデータフレーム、行列やリストが含まれています。私のShinyアプリでは、主にグラフィックス用にデータを使いたいので、アプリが動作している間にロードする必要があります。

+0

私は 'envir'と別のものを渡す必要がありますか? 'envir = .GlobalEnv'を使用すると、ファイルが読み込まれているように見えますが、Shinyはアプリケーションを終了して再起動するまで内容を使用していないようです。 –

+0

テストできるものを再現してください。あなたのファイルに何が入っているのか分からないときには、答えにくいです。どのようにそれを読み込むためにwnat – Batanichek

答えて

2

これは、例を参照してください

"シャイニーは内容を使用していないようだ" の意味を理解するのは難しいね( - 。私は私のデータでオブジェクト "Y" を持っている)

UI

shinyUI(

    fluidPage( 
    shinyFilesButton('file', 'Load Dataset', 'Please select a dataset', FALSE), 
    textOutput("txt") 

) 
) 
データから変更

サーバー

shinyServer(function(input, output,session) { 
    shinyFileChoose(input,'file', session=session,roots=c(wd='.')) 

    observeEvent(input$file, { 
    inFile <- parseFilePaths(roots=c(wd='.'), input$file) 
    load(as.character(inFile$datapath), envir=.GlobalEnv) 
    }) 

    output$txt=renderPrint({ 
    input$file 
    if(exists("y")) y}) 

    }) 

テキスト。どちらも、仕事をバリアントいますが、セッション中に別のデータを必要とする場合は、2番目のより良いreactiveValues

shinyServer(function(input, output,session) { 
    shinyFileChoose(input,'file', session=session,roots=c(wd='.')) 
    envv=reactiveValues(y=NULL) 
    observeEvent(input$file, { 
    inFile <- parseFilePaths(roots=c(wd='.'), input$file) 
    load(as.character(inFile$datapath)) 
    envv$y=y 
    }) 

    output$txt=renderPrint({envv$y}) 

    }) 

よう

simplisityのためにあなたが使用することができます。

+0

ありがとう、これは動作します。 –

+0

クライアントコンピュータからファイルを選択する場合、サーバーファイルにのみアクセスできますか?クライアントコンピュータからファイルやフォルダを選択するにはどうすればよいですか? – Mohammad

+0

@mohammadクライアントPCのファイルが必要な場合は、usrのfileinputを使用できます。https://shiny.rstudio.com/reference/shiny/latest/fileInput.html – Batanichek

関連する問題