Я пытаюсь создать приложение, которое динамически создает различные вкладки, в которых есть версия моей исходной таблицы, отфильтрованная по переменной (среди всех, выбранных CheckboxGroupInput
).
Например, если я попробую с таблицей ирис , в которой есть переменная вид , принимающий 3 модальности virginita , сето и лишай , тогда я хотел бы получить первую вкладку с наблюдениями, где Species = virginita
, секунду, где Species = setosa
et c ...
Я нашел решение на этом форуме для динамического создания вкладки, но во всех них получен набор данных, отфильтрованный по последнему выбранному входу (здесь versicolor).
Я подозреваю, что проблема с lapply
, но я новичок в R
и блестящий и я не могу найти решение.
Хотелось бы получить небольшую помощь!
Спасибо всем!
library(shiny)
ui <- pageWithSidebar(
headerPanel = headerPanel('iris'),
sidebarPanel = sidebarPanel(checkboxGroupInput("filter","Choices",c("virginita","setosa","versicolor"), selected=c("virginita","setosa","versicolor"))
),
mainPanel(uiOutput("my_tabs"))
)
server <- function(input, output, session) {
df = iris
output$my_tabs = renderUI({
dt <- list()
for ( i in 1:3) {
output[[paste0("tab",as.character(i))]] <- DT::renderDataTable ({
dt2 <- subset(df, Species==input$filter[i])
return(dt2)
})
dt[[i]] <- DT::DTOutput(paste0("tab",as.character(i)))
}
criteria <- input$filter
n=length(criteria)
myTabs = lapply(1:n, function(j){
tabPanel(criteria[j],
renderUI(dt[[j]])
)
})
do.call(tabsetPanel, myTabs)
})
}
runApp(list(ui = ui, server = server))