2016-10-30 1 views
0

Je me bats en ce moment et aurait besoin d'aide.interactivité brillante entre deux variables de sortie

J'ai deux rhandondables donc deux sorties. Au sein de la fonction de rendu, je fais quelques changements d'une base de données et l'utilisateur est capable de changer l'élément de données dans rhandsonable.

première table:

output$out <- renderRHandsontable({ 

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

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


}) 

deuxième table:

output$out2 <- renderRHandsontable({ 

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

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

}) 

Pour le rendre un peu plus clair, laisse supposer la première table (output$out) montre une table en chiffres absolus et le second (output$out2) en pourcentage. Ce que je voudrais souligner, c'est que si l'on met à jour une table, l'autre table doit également être mise à jour. c'est-à-dire que les nombres en pourcentage doivent être calculés en nombres absolus et "revenir" à un grand datable plat.

Maintenant, comment puis-je rendre ce deux interactif de sorte que si je mets à jour la première table, les changements seront soumis à la table deux et inversement afin que les changements «les plus récents» soient toujours reflétés.

apprécierais toute aide

Répondre

0

Si les deux tables partagent les mêmes données sous-jacentes, et vous mettez à jour les données sous-jacentes à chaque fois que le changement se produit, alors il devrait fonctionner. Voici un exemple simple où les deux tables afficheront le même jeu de données. La mise à jour dans l'un sera reflétée dans l'autre.

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)