两个输出变量之间的闪亮互动

时间:2016-10-30 15:57:48

标签: r shiny output interactive

我现在很挣扎,需要一些帮助。

我有两个rhandondable因此两个输出。在渲染函数中,我对数据帧进行了一些更改,用户可以在rhandsonable中更改数据框。

第一张表:

 output$out <- renderRHandsontable({

if (is.null(input$out)) {
  hot <- rhandsontable(df())
} else {

  hot <- hot_to_r(input$out)
  hot <- rhandsontable(hot)
}


})

第二个表:

output$out2 <- renderRHandsontable({

if (is.null(input$out)) {
  hot <- rhandsontable(df())
} else {

  hot <- hot_to_r(input$out2)
  hot <- rhandsontable(hot)
}

})

为了使它更清晰,我们假设第一个表(output$out)以绝对数字显示一个表,第二个表(output$out2)以百分比表示。我想指出的是,如果一个表更新一个表,另一个表也需要更新。即百分比数字需要以绝对数量计算,并且&#34;返回&#34;到大平坦的数据表。

现在我如何使这两个互动,以便如果我更新表一,更改将提交到表二,反之亦然,以便始终&#34;最近&#34;变化得到反映。

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

如果两个表共享相同的基础数据,并且每当发生更改时更新基础数据,那么它应该可以工作。下面是一个简单的示例,其中两个表将显示相同的数据集。一个更新将反映在另一个。

library(shiny)

ui <- shinyUI(fluidPage(

   titlePanel("Syncing two RHandontables"),

   sidebarLayout(
      sidebarPanel(
      ),

      mainPanel(
         rHandsontableOutput("out1"),
         tags$hr(),
         rHandsontableOutput("out2")
      )
   )
))

server <- shinyServer(function(input, output) {

  data <- reactiveValues(data=head(iris))

  output$out1 <- renderRHandsontable({
    rhandsontable(data$data)
  })

  output$out2 <- renderRHandsontable({
    rhandsontable(data$data)
  })

  observeEvent(input$out1, {
    data$data <- hot_to_r(input$out1)
  })

  observeEvent(input$out2, {
    data$data <- hot_to_r(input$out2)
  })

})

shinyApp(ui = ui, server = server)