我在将无功功能中的值分配给无功值时遇到了一些问题。根据输入$ 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]]
})
})
答案 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