我现在很挣扎,需要一些帮助。
我有两个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;变化得到反映。
感谢任何帮助
答案 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)