【问题标题】:Issues with assigning reactive values within reactive functions在反应函数中分配反应值的问题
【发布时间】:2016-05-16 09:53:40
【问题描述】:

我在将反应函数中的值分配给反应值时遇到了一些问题。根据 input$id 我想为正确的反应值分配一个值。但是,尽管我可以观察到调用我的反应函数的正确值,例如在观察环境中,但我无法编写反应值。最终,我想根据 input$top 将 input$a1 分配给 reac.val$tab1 并将 input$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]]
  })
})

【问题讨论】:

    标签: r shiny reactive-programming


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2019-01-02
      • 2021-11-25
      • 2018-07-30
      • 1970-01-01
      相关资源
      最近更新 更多