の値に依存するリアクティブなtabPanel / tabPanelsを使用して単純なアプリを作成したいと思いますselectInput
(すでにここで解決策を見つけました)。さらに、このウィジェットで 1 つの値を選択すると、フィルターとしても機能するさまざまな数の tabPanels が表示されます。たとえば、私のアプリではdiamonds
データセットを使用しています。「非常に良い」という単語を選択すると、この値を持つすべての行を含むデータセットが表示されます。その上部にはcolor
、フィルター処理されたデータセットのすべての一意の値も表示されます。私が達成したいのは、上記の tabPanels を使用してもう一度フィルタリングできるようにすることです。
library(shiny)
library(shinyTree)
library(dplyr)
library(DT)
library(ggplot2)
diamonds_test <- sample_n(diamonds, 100)
diam_cut <-
list(
`Very Good` = "Very Good",
Ideal = "Ideal",
Fair = "Fair",
Premium = "Premium",
Good = "Good"
)
runApp(list(
ui = pageWithSidebar(
headerPanel('Dynamic Tabs'),
sidebarPanel(
selectInput('name','',choices = diam_cut)
),
mainPanel(
uiOutput('mytabs'),
dataTableOutput('table')
)
),
server = function(input, output, session){
output$mytabs = renderUI({
colorVector <- diamonds_test %>%
filter(cut == input$name) %>%
distinct(color) %>%
.[['color']] %>%
as.character()
myTabs = lapply(colorVector, tabPanel)
do.call(tabsetPanel, c(myTabs, type = 'pills'))
})
output$table <- renderDataTable({
data <- diamonds_test %>%
filter(cut == input$name)
datatable(data)
})
}
))