从MainPanel切换到Tabset视图时,Shiny中的文本输入无效

问题描述 投票:0回答:1

我有一个Shiny应用程序,它接受文本输入并在主面板上显示它(我使用this答案来构建它):

长子。 R:

library(shiny)

shinyUI(fluidPage(

    titlePanel("This is a test"),

    sidebarLayout(
      sidebarPanel(
          textInput("text1", "Enter the text", ""),
          actionButton("goButton", "Go")
    ),

      mainPanel(
         h3(textOutput("text1", container = span))
            )
           )
          )
         )

server.r:

shinyServer(function(input, output) {

  cap <- eventReactive(input$goButton, {
    input$text1
  })

  output$text1 <- renderText({
    cap()
  })

})

它工作得很好,直到我决定添加一个Tabset面板,并在其中一个选项卡上显示输入。我在ui.r中修改了mainPanel(),如下所示:

mainPanel(
  tabsetPanel(type = "tabs",
              tabPanel("t1"), 
              tabPanel("t2", 
              tabPanel("t3"), h3(textOutput("text1", container = span)),
        )
      )

在此更改后,我在启动应用程序时出错:

ERROR: cannot coerce type 'closure' to vector of type 'character'

有什么我想念的吗?

r shiny
1个回答
1
投票

您必须将内容放在调用tabPanel的选项卡中。例如:

mainPanel(
  tabsetPanel(
    type = "tabs",
    tabPanel("t1"), 
    tabPanel("t2"), 
    tabPanel("t3", h3(textOutput("text1", container = span)))
  )
)

因此,server.R与你的问题没有变化,ui.R变为:

library(shiny)

shinyUI(
  fluidPage(
    titlePanel("This is a test"),
    sidebarLayout(
      sidebarPanel(
        textInput("text1", "Enter the text", ""),
        actionButton("goButton", "Go")
       ),
      mainPanel(
        tabsetPanel(
          type = "tabs",
          tabPanel("t1"), 
          tabPanel("t2"), 
          tabPanel("t3", h3(textOutput("text1", container = span)))
        )
      )
    )
  )
)
© www.soinside.com 2019 - 2024. All rights reserved.