2017-02-27 29 views
1

ui.Rserver.Rglobal.Rがあります。global.Rでグローバル変数Rを使用する方法Shiny

datasetを選択してactionButtonを押すと、反応性グローバル変数を使用します。

例:

ui.R

fluidPage(
    titlePanel("Using global variable"), 
    fluidRow(
     uiOutput("ui1"), 
     uiOutput("ui2"), 
     uiOutput("ui3") 
    ), 
) 
) 

server.R

function(input, output) { 

    output$ui1 <- renderUI({ 
    selectInput("dataset", "firstValue", choices = c("first", "second", "third") 
    }) 

    output$ui2 <- renderUI({ 
     actionButton("doIt", class="btn-primary", "change") 
    }) 

    output$ui3 <- renderText({ 
     paste(catPath) 
    }) 
} 

global.R

catPath <<- paste(output$dataset, "/completed", sep="") 

datasetに選択すると、first/completedui3 renderTextになります。 actionButtonを押します。

どうすればこのプロセスを完了できますか?

+0

コードに余分なカンマ/括弧があります。 – r2evans

+0

私はそれを編集しました。これをチェックしてください。 –

+0

一般に 'global.r'は、反応しない関数やデータなどのために使われます。リアクティブオブジェクトはserver.r –

答えて

3

私は@JohnPaulと@ Lee88に同意し、catPathはおそらくserver.Rに属しています。それを言いましたが、私は今ここでそれを保つつもりです(あなたがMWEでこれについて他の理由があると仮定して)。

global.Rは:

catPath <- "" 

(何もアクションが取られていない場合は、それが返されますが)私は、そうでない場合は、ここで使用される値は無意味である必要があり、後で参照できるようにするために何かにそれを設定するために必要な。

ui.R

私が "停止?" を追加あなたのアプリケーションを「終了」し、catPathの値を呼び出し環境に取り込むことができるようにします。意図的にアプリを終了させたくない場合は必要ありません。

fluidPage(
    titlePanel("Using global variable"), 
    fluidRow(
    uiOutput("ui1"), 
    uiOutput("ui2"), 
    uiOutput("ui3"), 
    actionButton("stopme", "Stop?") 
) 
) 

server.R

私は(計算を実行しない)HTMLオブジェクトを作成するためにoutput$ui3を変更し、それらの2つのイベントや行動を観察します。もう一度、あなたは "停止する必要はありませんか?"上記のボタンを2回押す必要はありません。 (あなたがそれを使用する場合、stopAppへの引数は目に見えない呼び出し元に返されることに注意してください。)

function(input, output, session) { 
    output$ui1 <- renderUI({ 
    selectInput("dataset", "firstValue", choices = c("first", "second", "third")) 
    }) 
    output$ui2 <- renderUI({ 
    actionButton("doIt", class="btn-primary", "change") 
    }) 
    output$ui3 <- renderUI({ 
    textInput("myinput", "catPath", "") 
    }) 
    observeEvent(input$doIt, { 
    catPath <<- paste(input$dataset, "/completed", sep = "") 
    updateTextInput(session, inputId = "myinput", value = catPath) 
    }) 
    observeEvent(input$stopme, { stopApp(catPath); }) 
} 

newCatPath <- runApp("path/to/dir")のようなものをやって。

+0

あなたの返信ありがとう! –

+0

十分な場合は、回答を「受け入れる」ようにしてください。 – r2evans

+0

さて、もう一度質問に答えてもいいですか? 'selectInput'にディレクトリリストを表示したいと思います。 '' list''、 '' choices''、 '' lists''、 '' lists''、 '' lists''、 '' lists''、 '' list''、 ''選択されたリスト=リスト[1]) } ' 私のアプリケーションを実行すると、selectInputは空白です。 ベクトルとリストの両方で 'choices'が可能であることは知っていますが、ここで何が問題なのですか? –

関連する問題