2016-05-16 4 views
1

Ich habe Probleme mit der Zuordnung von Werten innerhalb einer reaktiven Funktion zu reaktiven Werten. Abhängig von der Eingabe $ id möchte ich dem korrekten reaktiven Wert einen Wert zuweisen. Ich bin jedoch nicht in der Lage, die reaktiven Werte zu schreiben, obwohl ich die korrekten Werte beobachten kann, die meine reaktive Funktion zum Beispiel in einer Beobachtungsumgebung aufrufen. Schließlich möchte ich, abhängig von der Eingabe $ top, den Input $ a1 zu reac.val $ tab1 zuweisen und $ a2 in reac.val $ tab2 eingeben. Ich habe meine ui.R und server.R Dateien unten angehängt.Probleme bei der Zuweisung reaktiver Werte innerhalb reaktiver Funktionen

ui.R

library(shiny) 
shinyUI(navbarPage("My App", id = "top", 
       tabPanel("Infos", id = "info", 
         textInput("name", "last name", "")), 
       navbarMenu("Menu", 
          tabPanel("tab1", 
            column(3, textInput(inputId="a1", label="input1", value = 0 , width = 100)), 
            column(4, tableOutput("aim1"))), 
          tabPanel("tab2", 
            column(3, textInput(inputId="a2", label="input2", value = 0 , width = 100)), 
            column(4, tableOutput("aim2")))) 
)) 

server.R

library(shiny) 
shinyServer(function(input, output) { 

val <- data.frame(first = numeric(1), second = numeric(1)) 
reac.val <- reactiveValues("tab1" = val, "tab2" = val) 

    observeTab <- reactive({ 
    tab <- input$top 
    if (tab != "Infos") { 
     tab.df <- reac.val[[tab]] 
     first.val <- as.numeric(input$a1) 
     second.val <- as.numeric(input$a2) 
     tab.df$tab1 <- first.val 
     tab.df$tab2 <- first.val 
     reac.val[[tab]] <- tab.df 
     reac.val[[tab]] 
    } 
}) 


    output$aim1 <- renderTable({ 
    reac.val[[input$top]] 
    }) 

    output$aim2 <- renderTable({ 
    reac.val[[input$top]] 
    }) 
}) 

Antwort

1

Ich denke Problem, dass observeTab es sa Funktion, aber Sie nennen es nirgendwo

können Sie versuchen, hinzufügen

observe({ 
    observeTab() 
    }) 

in Ihrem Server, so rufen Sie Ihre Funktion bei jeder Änderung auf.

Oder wenn Sie fucntion nur anrufen möchten, wenn Tab

observeEvent(input$top,{ 
    observeTab() 
    }) 

Typo

geändert Und Sie haben hier Typo (meiner Meinung nach)

tab.df$tab1 <- first.val 
tab.df$tab2 <- first.val 

brauchen

tab.df$tab1 <- first.val 
tab.df$tab2 <- second.val 
Verwandte Themen