如何在选项卡中将两个uiOutput馈送到renderUI

当我使用uiOutput闪亮时尝试将renderUI馈入tabPanellibrary(shiny) ui <- fluidPage( tabsetPanel( tabPanel("Data",uiOutput("moreControls") ),tabPanel("Research",uiOutput("moreControls2") ) ),plotOutput("plot1") ) server <- function(input,output) { output$moreControls <- renderUI({ tagList( sliderInput("mean","Mean",-10,10,1),textInput("label","Label") ) }) output$moreControls2 <- renderUI({ tagList( sliderInput("sd","SD",1,50,10),textInput("label2","Label2") ) }) output$plot1 <- renderPlot({ hist(rnorm(n = 100,input$mean,input$sd),xlim = c(-100,100) ) }) } shinyApp(ui,server) 时,在第一次运行中出现错误。切换选项卡后,该应用程序运行正常。

这是再现错误的最小示例

Vector2D
a469096355 回答:如何在选项卡中将两个uiOutput馈送到renderUI

@Vivek的答案很好,但这是另一种方式:

server <- function(input,output) {
  output$moreControls <- renderUI({
    tagList(
      sliderInput("mean","Mean",-10,10,1),textInput("label","Label")
    )
  })

  output$moreControls2 <- renderUI({
    tagList(
      sliderInput("sd","SD",1,50,10),textInput("label2","Label2")
    )
  })
  outputOptions(output,"moreControls2",suspendWhenHidden = FALSE)

  output$plot1 <- renderPlot({ 
    req(input$mean,input$sd)
    hist(rnorm(n = 100,input$mean,input$sd),xlim = c(-100,100) )
  })

}
shinyApp(ui,server)

input$meanuiOutput渲染之前不可用,input$sd也不可用,但是另外input$sd在切换到第二个选项卡之前不可用,因为liderInput隐藏。

,

之所以不起作用,是因为Shiny尚未在您的应用运行时评估这些值。因此,renderPlot()

实际上不可用输入值

传递图形值的一种好方法是使用反应表达式。在下面的代码中,我使用了plot_params(),在反应式代码中,我创建了一个列表,其中存储了生成图的参数。

我还建议您使用shiny::validate()来确保输入值在渲染输出之前是有效的。 (请参见下面的用法)

library(shiny)

ui <- fluidPage(
  tabsetPanel(
    tabPanel("Data",uiOutput("moreControls") 
    ),tabPanel("Research",uiOutput("moreControls2") 
    )
  ),plotOutput("plot1")
)

server <- function(input,"Label2")
    )
  })

  # Reactive expression for plot parameters.
  plot_params <- reactive({
    list(
      mean = input$mean,sd = input$sd
    )
  })

  output$plot1 <- renderPlot({
    validate(
      need(input$mean,'Please check that mean is set!'),need(input$sd,'Please check that sd is set.')
    )
    hist(rnorm(n = 100,plot_params()$mean,plot_params()$sd),server)
本文链接:https://www.f2er.com/3155781.html

大家都在问