介绍如何在闪亮的应用
初始化默认值呈现项目在shinyApp
,我想渲染动态输入输出。
我的问题是,使用shinydashboard
和不同的选项卡时,*Input()
的默认值仅在各个选项卡被激活(想到输入和输出选项卡)时才会呈现。
当在一个简单的例子中使用input$*
值的switch
语句时(除非在输入之后,switch
确实工作并且输出出现),我得到相同的行为。请参阅以下内容:
代码
library(shiny)
shinyApp(
ui = shinyUI(fluidPage(sidebarLayout(sidebarPanel(uiOutput("select_bin")),
mainPanel(plotOutput("distPlot"))))),
server = function(input, output) {
output$select_bin <- renderUI({
selectInput("bins", "Number of bins:", c("few", "many"))
})
output$distPlot <- renderPlot({
x <- faithful[, 2]
bins <- switch(input$bins, few = 10L, many = 100L)
bins <- seq(min(x), max(x), length.out = bins)
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
})
上述工程的代码,而是抛出一个
Warning: Error in switch: EXPR must be a length 1 vector
。
我想input$bins
不可用,直到selectInput
呈现。
问题
我如何定义input$bins
的默认值,所以selectInput
呈现之前,在renderPlot
表达不会引发报警?
第一种方法
我试图用observe
为this post,但我不知道它的确切含义,因此很难解决的问题。
library(shiny)
shinyApp(
ui = shinyUI(fluidPage(sidebarLayout(sidebarPanel(uiOutput("select_bin")),
mainPanel(plotOutput("distPlot"))))),
server = function(input, output) {
output$select_bin <- renderUI({
selectInput("bins", "Number of bins:", c("few", "many"))
})
observe({
bins <- switch(input$bins, few = 10L, many = 100L)
bins
})
output$distPlot <- renderPlot({
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = bins)
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
})
哪一个根本不起作用并抛出额外的Warning: Error in seq.default: object 'bins' not found
。
谢谢您的解决方案。可以省略警告,但不允许在默认情况下显示剧情(使用shinydashboard和选项卡)。尽管如此+1。 – setempler
@setempler我敢打赌,你没有把'active = T'放在默认标签中...... – Hao
的确,我只知道'menuItem()'中的'selected = T'。在'中找不到'active'参数?shinydashboard :: tabItems'。我想念什么? – setempler