2017-07-28 9 views
0

私は、ボタンをクリックして一連の変数を設定できる単純なローラーを構築しようとしています。私はこれが簡単な解決策だと確信していますが、私は仕事に慣れるのに苦労しています。アクションボタンをクリックした後の変数の設定方法は?

これは私が持っているものです。私はそれが欲しいのと同じようにインターフェイスを設定していますが、基本的には強さの行の新しい価値を得たいと思っています。

library(shiny) 
ui = fluidPage( 
    titlePanel(""), 
    sidebarLayout(  
    sidebarPanel(
     textInput("char_name","Name"), 
     textInput("char_sex","Sex"), 
     actionButton("rollButton", "Roll!", width = "100%"), 
     hr(), 
     helpText("Please consult _ if you need assitance.") 
    ), 
    mainPanel(
     htmlOutput("name"), 
     htmlOutput("sex"), 
     htmlOutput("natl"), 
     htmlOutput("strength") 
    ) 
) 
) 

server = function(input, output) { 
    observe({ 
    if(input$rollButton > 0) { 
     strength <- sum(sample(1:6,3,replace=TRUE)) 
    } 
    }) 
    output$name <- renderText({ 
    input$rollButton 
    isolate(paste0('<b>Name</b>: ', input$char_name)) 
    }) 
    output$sex <- renderText({ 
    input$rollButton 
    isolate(paste0('<b>Sex</b>: ', input$char_sex)) 
    }) 
    output$strength <- renderText({ 
    input$rollButton 
    isolate(paste0('<b>Strength</b>: ', strength)) 
    }) 
} 
shinyApp(ui = ui, server = server) 

答えて

0

強度変数が別の関数で設定されているため、この変数を読み取ることができません。

server = function(input, output) { 

    val <- reactiveValues(strength=NULL) 

    observe({ 
    if(input$rollButton > 0) { 
     val$strength <- sum(sample(1:6,3,replace=TRUE)) 
    } 
    }) 
    output$name <- renderText({ 
    input$rollButton 
    isolate(paste0('<b>Name</b>: ', input$char_name)) 
    }) 
    output$sex <- renderText({ 
    input$rollButton 
    isolate(paste0('<b>Sex</b>: ', input$char_sex)) 
    }) 
    output$strength <- renderText({ 
    input$rollButton 
    isolate(paste0('<b>Strength</b>: ', val$strength)) 
    }) 
} 
shinyApp(ui = ui, server = server) 
+0

私は他の変数ではうまくいかないと思います。関数にネストするのは簡単ですが、関数に直接格納されていない方法ですべての数値を変換します。送信ボタンをクリックした後にこれらの変数を別々に処理してから、ベクターがピックアップするように自動的にロードされるようにする方法はありませんか? – Hanna

+0

変数に値を設定できるように、私の答えを今更新しました。レンダー機能がこれを検出します – tjjjohnson

+0

これは完全に機能しました! if(input $ rollButton> 0){}文よりも変数を何回も変換できるかどうか知っていますか?私はその値をロールのタイプの記述に転記します。私は両方のステートメントを実行しようとし、最終的にロールとデコードステートメントをマージして動作させる必要がありました。 – Hanna

関連する問題