2017-10-27 11 views
1

Shinyプログラミングでは全く新しいので、ネットでどれだけ検索しても問題は解決できません。checkboxInputのブール値行列を入力する際の問題

私はユーザーがcheckboxInputによってboolenマトリックスを入力したいと思っています。しかし、行列に値をコピーしようとすると、明らかに変化しません。私はreactive()observeEvent()の両方を試してみましたが、成功しませんでした。ここで

は、いくつかのサンプルコードです:

library(shiny) 
library(markdown) 
library(relations) 

prbm <- matrix (c(TRUE,FALSE,FALSE,TRUE), 2, 2) 

# Define UI ---- 
ui <- navbarPage("", 
     tabPanel("Your Turn", 
        fluidRow(column(5, "Enter your Relation!")), 
        fluidRow(column(1, 
         checkboxInput("pr1", "(1, 1)", prbm[1,1]), 
         checkboxInput("pr2", "(1, 2)", prbm[1,2])), 
        column(1, 
         checkboxInput("pr3", "(2, 1)", prbm[2,1]), 
         checkboxInput("pr4", "(2, 2)", prbm[2,2])), 
        column(10, uiOutput("value")) 
       ) 
       ) 
     ) 

# Define server logic ---- 
server <- function(input, output) { 
    reactive(prbm[2,2] <- input$pr4) 
    reactive(prbm[2,1] <- input$pr3) 
    observeEvent(input$pr2, prbm[1,2] <- input$pr2) 
    observeEvent(input$pr1, prbm[1,1] <- input$pr1) 
    output$value <- renderTable(prbm, colnames=FALSE) 
} 

# Run the app ---- 
shinyApp(ui = ui, server = server) 

私も成功せず、グローバル・アサインメントを試してみました。 observeEvent()関数が実行される(私はいくつかのcat() .Whatever stderrに私は、チェックボックスをクリックして、何も印刷されたマトリックス中に変化しないことをテストした。

をすべてのヘルプは高く評価されています。事前に

多くの感謝を、 コード

答えて

1

あなたのコードに問題はあなたがpbrmの値を変更したらrenderTableが呼ばれることは決してありませんように、あなたがobserveeventと組み合わせるreactiveValuesを使用することができます行うには、以下のようにされています。

server <- function(input, output) { 
     Rprbm <- reactiveValues(val=prbm) 
     # reactive(Rprbm$val[2,2] <- input$pr4) 
     # reactive(Rprbm$val[2,1] <- input$pr3) 

     observeEvent(input$pr2, Rprbm$val[1,2] <- input$pr2) 
     observeEvent(input$pr1, Rprbm$val[1,1] <- input$pr1) 
     observeEvent(input$pr3, Rprbm$val[2,1] <- input$pr3) 
     observeEvent(input$pr4, Rprbm$val[2,2] <- input$pr4) 
     output$value <- renderTable(Rprbm$val, colnames=FALSE) 
     } 

下図のようにあなたが書いたコードはreactiveを使用することでしょう最小限に別のオプション:

server <- function(input, output) { 
     Tab <- reactive({ 
      matrix(c(input$pr1, input$pr2, input$pr3, input$pr4), 2,2) 
     }) 

     output$value <- renderTable(Tab(), colnames=FALSE) 
     } 
関連する問題