R 在无功函数中分配无功值的问题

R 在无功函数中分配无功值的问题,r,shiny,reactive-programming,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",

我在将被动函数中的值分配给被动值时遇到一些问题。根据输入$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"))))
))
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]]
  })
})
server.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"))))
))
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]]
  })
})
库(闪亮)
shinyServer(功能(输入、输出){

val我认为问题在于,
observeTab
它是一个函数,但你们不知道它在哪里

您可以尝试添加

observe({
    observeTab()
  })
在您的服务器中,所以您在每次更改中调用您的函数

或者,如果您只想在选项卡更改时调用FUNCTION

observeEvent(input$top,{
    observeTab()
  })
打字错误 你这里有打字错误(我的想法)

tab.df$tab1