介紹如何在閃亮的應用
初始化默認值呈現項目在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