У меня есть несколько входов, которые я хотел бы иметь для фильтрации источника данных.Тем не менее, у меня есть 100 входных данных для рендеринга, но я ожидаю, что в любой момент времени будет использоваться только небольшое количество.
Я не хочу отображать их все на всякий случай, потому что это может сделать страницу загроможденнойи трудно ориентироваться.Я надеялся создать все виджеты и использовать условную панель, чтобы проверить, появляется ли она в списке перед ее отображением.
Проблема, с которой я столкнулся, состоит в том, что в аргументе условия внутри условной панели я не могу показатьсяОператор% in%, он не выдает ошибку - он просто не работает.
Я сделал легкий пример ниже:
# libs ----
library(shiny)
library(shinydashboard)
# header ----
header <- dashboardHeader(title = "Example")
#sidebar ----
sidebar <- dashboardSidebar(disable = T)
#body ----
body <- dashboardBody(
fluidRow(
column(
width = 12,
selectInput(
inputId = "control",
label = "choose something:",
choices = c("a",
"b",
"c",
"d",
"e"),
multiple = TRUE
)
)
),
conditionalPanel(
condition = "'a' %in% input.control",
textInput(inputId = "bla", label = "aaaaa")
),
conditionalPanel(
condition = "'b' %in% input.control",
textInput(inputId = "ble", label = "bbbbb")
)
)
# all ui ----
ui <- dashboardPage(
header = header,
sidebar = sidebar,
body = body
)
# server ----
server = shinyServer(function(input, output) {
})
# Run the application
shinyApp(ui = ui, server = server)
Я не былсмог найти способ решения этой проблемы, благодарю за любую помощь!
спасибо
РЕДАКТИРОВАТЬ - решено условие является выражением JS (спасибо @edavidaja заоб этом), и когда я попытался использовать: condition = 'input.control.includes("a")'
, это не удалось.так что я нашел решение с моим коллегой из JS dev и получил решение с ... condition = 'input.control && input.control.indexOf("a") > -1'