我使用多個選項卡構建了R Shiny應用程序,其中有一些共同的過濾器。現在,所有過濾器都是獨立的,不會跨多個選項卡進行同步。因此,當我將selectInput1從值「a」更改爲值「b」時,我必須在包含selectInput2的下一個選項卡上以相同的選項/含義重複此處理。R在多個選項卡上閃亮的同步過濾器
我考慮過濾器是動態的,因此使用R Shiny的服務器端渲染它們。那麼當然,我總是可以使selectInput2等於selectInput1。但是如果用戶改變了selectInput2而不是selectInput1呢?它在邏輯中創建了一種循環。
我花了一段時間找到解決這個問題的方法,不知何故,我確信我不是第一個遇到這個問題的人。建議或有用的鏈接將非常有幫助!
實施例:
## UI.R
shinyUI(
dashboardPage("Dashboard",
# Create tabs
tabPanel("Start",
p("This is the frontpage")
),
tabPanel("tab1",
uiOutput("selectInput1")
),
tabPanel("tab2",
uiOutput("selectInput2")
)
)
)
和:
## Server.R
library(shiny)
shinyServer(function(input, output,session){
output$selectInput1 <- renderUI({
selectInput(inputId = "id1",
label = "select",
choices = c("a","b","c"),
selected = "a")
})
output$selectInput2 <- renderUI({
selectInput(inputId = "id2",
label = "select",
choices = c("a","b","c"),
selected = "a")
})
})
在側邊欄中添加一個selectInput有什麼問題?這就是我要做的事情,因爲您希望用戶在所有選項卡上進行單一選擇。 –
謝謝你的快速回復。在兩個選項卡上添加相同的selectInput元素不起作用,因爲Shiny需要爲每個加載的元素添加不同的ID。當我嘗試使用renderUI(Server)和uiOutput(UI)加載兩個相同的元素時,它無法加載任何元素。 – Dendrobates
sry,那是'renderUI()'錯誤。但是,如果你使用側邊欄,你不必包含它兩次,就像@JorisMeys說的那樣。如果沒有,最好給我們舉個例子,... – BigDataScientist