在无功功能中分配无功值的问题

时间:2016-05-16 09:53:41

标签: r shiny reactive-programming

我在将无功功能中的值分配给无功值时遇到了一些问题。根据输入$ id,我想为正确的无功值赋值。但是,我无法写入反应值,尽管我可以观察调用我的反应函数的正确值,例如在观察环境中。最后,我想根据输入$ top将输入$ a1分配给reac.val $ tab1并将$ a2输入到reac.val $ tab2。 我在下面附上了我的ui.R和server.R文件。

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]]
  })
})

1 个答案:

答案 0 :(得分:1)

我认为问题observeTab它是一个功能,但你称之为

你可以尝试添加

observe({
    observeTab()
  })

在您的服务器中,因此您可以在每次更改时调用您的函数。

或者,如果您只想在标签更改时调用功能

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

错字

你有错字(我的想法)

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

需要

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