2017-07-09 11 views
1

私は遺伝的データをインポートして可視化するための光沢のあるアプリケーションを構築しました。私は、ユーザーが自分のデータへのパスをサーバーのパラメーターとして渡すことができるようにしたい。これを行う方法はありますか?パスは単純にサーバー関数に渡される文字列になります。Shinyサーバにパラメータを渡す

これはパラメータとして渡され、他の解決策ではありません。私は現在、このアプリケーションのRパッケージを作成しています。アプリケーションを起動するパッケージ内に関数があります。

runMyApp <- function() { 
    shiny::runApp(system.file("myapp", package="mypackage")) 
} 

順番にサーバーに渡され、このrunApp機能、にパラメータを渡すために私のためにどのような方法があります:

この関数は次のようになりますか?

ありがとうございました!

+0

[shiny issues page](https://github.com/rstudio/shiny/issues/440)にこれに関する議論があります。このソリューションには、グローバル環境でパラメータを保存することがあります。 –

答えて

0

これは広範にテストされていませんが、動作するようです。

は、inst/myapp.R に、必要に応じて(私は変数がこれらの名前を持っていると仮定) 光沢のuiserverを定義しますが、ないコールshinyAppを行います。次に、あなたのserver内の任意の関数がparamtest_paramを参照し、それを使用することができるはず

launch_app(param, ...) { 
    file_path <- system.file("myapp.R", package = "mypackage") 
    if (!nzchar(file_path)) stop("Shiny app not found") 
    ui <- server <- NULL # avoid NOTE about undefined globals 
    source(file_path, local = TRUE) 
    server_env <- environment(server) 

    # Here you add any variables that your server can find 
    server_env$test_param <- "test" 
    server_env$param <- param 

    app <- shiny::shinyApp(ui, server) 
    shiny::runApp(app, ...) 
} 

: は、その後、あなたのパッケージに、あなたは次のように関数を定義することができます。

+0

これには、サーバーのすべての関数が、パッケージからどのような関数も使用できるという利点があります。 – Alexis

関連する問題