Я думаю, что понимаю. Вы можете создать реактивную переменную, которая не зависит от пользовательского интерфейса, поскольку входные данные не обновляются при удалении элемента пользовательского интерфейса.
library(shiny)
library(shinydashboard)
ui <-
dashboardPage(
dashboardHeader(
title = 'Test'),
dashboardSidebar(),
dashboardBody(
selectInput(
inputId = 'mainInput',
label = 'Main input',
selected = 'Show',
choices = c('Show', 'Hide')
),
uiOutput(
outputId = 'secondInputUI'
),
actionButton(
inputId = 'thirdInput',
label = 'Check value'
)
)
)
server <- function(input, output, session){
secondInputVar <- reactive({
if(input$mainInput == 'Show'){
input$secondInput
} else {
}
})
observeEvent(input$mainInput, ignoreNULL = TRUE, {
if (input$mainInput == 'Show')
output$secondInputUI <-
renderUI(
selectInput(
inputId = 'secondInput',
label = 'Second input',
selected = 0,
multiple = FALSE,
choices = c(1, 0)
)
)
else {
output$secondInputUI <- renderUI({
NULL
})
}
})
observeEvent(input$thirdInput, {
showNotification(
session = session,
ui = paste(secondInputVar(), collapse = ', '))
})
}
shinyApp(
ui = ui,
server = server)
Я голосовал за ответ Mitch Wheat, но существует несколько приемов, которые я также протестировал бы на эффективность.
Мое большое беспокойство о наличии таблицы, полной [символа], [интервал] - Вы, может все еще выполнить большие объемы бессмысленных сравнений строк, особенно если Вы используете %word % на этой новой таблице. (Дублированные но not-matching-our-search записи).
Я, вероятно, выбрал бы экспериментирование с
Words
-----
chars | word_id
WordsToEntry
------------
word_id | entry_id
и посмотрите, является ли база данных наверху достойным смягчением этой возможной проблемы (я не могу протестировать, извините),
Как насчет того, чтобы предварительно обработать (однажды) таблица объектов (и каждая новая запись, добавленная к нему, должен был бы быть обработан), для составления наличия таблицы возникновения слова
CREATE TABLE WordItemOccurance
(
[Word] varchar(50) not null,
ItemId int not null
constraint FK_Items references ItemTable(ID)
)
Выполните итерации по всем своим объектам, ворвитесь в отдельные слова и добавьте записи в таблицу происшествия, поскольку они найдены.
Создание кластерного индекса на [Word] и соединение с таблицей Item на ItemId должны быть быстрыми.