いくつかのフィルタを共通に持つ複数のタブを持つR Shinyアプリケーションを作成しました。現在、すべてのフィルタはスタンドアロンであり、複数のタブにまたがって同期しません。したがって、selectInput1を値 "a"から "b"に変更すると、selectInput2が同じオプション/意味を持つ次のタブでこの処理を繰り返す必要があります。R Shinyは複数のタブでフィルタを同期させます
フィルタを動的にすることを考えました。そのため、R Shinyのサーバー側でレンダリングしました。もちろん、私はいつもselectInput2をselectInput1に等しくすることができます。しかし、ユーザーがselectInput1ではなくselectInput2を変更するとどうなりますか?これは、ロジックにループの種類を作成します。
私はこの問題の解決策を見つけるのにかなりの時間を費やしましたが、何とか私はこの問題に遭遇した最初の人ではないと確信しています。提案や役に立つリンクが本当に役立つでしょう!
例:
## 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を1つだけ追加すると何が問題になりますか?ユーザーがすべてのタブで1つの選択肢を作ってもらいたいので、これをやる方法です。 –
お返事ありがとうございます。両方のタブに同じselectInput要素を追加することは機能しません。なぜなら、Shinyはロードされるすべての要素に対して異なるIDを必要とするからです。私がrenderUI(Server)とuiOutput(UI)を使って同じ要素を2つロードしようとすると、ロードに失敗します。 – Dendrobates
sry、それは 'renderUI()'で間違っていました。それでも、あなたがサイドバーを使用すると、@ JorisMeysのように2回インクルードする必要はありません。そうでない場合は、例をよく見せてください。 – BigDataScientist