Этот вопрос простирается от another question, который правильно объясняет, как использовать кнопку для подмножества DataFrame на основе слайдера.R shiny eventReactive button subsets dataframe на основе выбранного checkboxgroup
Мне нужна более конкретная помощь с моей реальной проблемой.
У меня есть функция «transition_matrix» в моем server.R, который принимает 2 входа: (а) dataframe, содержащий информацию о продукте и (б) даты. Я предварительно загружаю фрейм данных как фиксированный, но затем разрешаю пользователю изменять дату. Таким образом, когда пользователь меняет дату, функция выполняется для данного фрейма данных и выбранной даты.
код до сих пор:
server.R
shinyServer(function(input, output) {
bigmatrix <- reactive({
transition_matrix(capital_summary_cum, ceiling_date(as.Date(input$datebox),"month")-1)
})
output$balance_matrix <- renderTable({
balances_ <- bigmatrix()[1:(default_state +2),] %>%
round(digits = 0) %>%
format(big.mark = ",")
transition_matrix <- function(df1, date1){
date2 <- ceiling_date(as.Date(AddMonths(date1,1)),"month")-days(1)
...
...
То, что я хочу делать дальше, чтобы позволить пользователю подмножество в dateframe, а также. Для этого я предлагаю группу флажков, которые представляют собой продукты. Таким образом, помимо даты, пользователь может также выбрать подмножество продуктов, на которых будет выполняться вышеупомянутая функция.
Проблема заключается в том, что для выполнения функции требуется около 1,5 секунд, поэтому каждый раз, когда пользователь будет проверять коробку (из которых около 40), функция будет называться, создавая нежелательную задержку в 1,5 секунды.
Я скорее хочу выделить (?) Флажки, чтобы пользователь мог выбрать нужный список продуктов до тех пор, пока не будет нажата кнопка. После нажатия кнопки я хочу подмножить блок данных на основе выбранных флажков и только потом передать это в функцию. Мне действительно хотелось бы, чтобы дата ввода оставалась «полностью реактивной», поэтому мне не нужно нажимать кнопку каждый раз, когда дата также изменяется.
Как добавить кнопку, которая будет подмножать мою фреймворк на основе выбранных флажков и автоматически вызывать функцию с выбранной датой?
Что произойдет, если вы используете 'eventReactive' вместо' реактивного' для вашей функции 'bigmatrix'? Обратите внимание, что вам нужен 'input $ datebox' в качестве первого аргумента для' eventReactive'. Если это не дает желаемого результата, возможно, флажки проверяются где-то еще в вашем коде. –
В качестве альтернативы вы можете использовать 'isolate' для флажков, чтобы блестящие игнорировали это обновление. Shiny игнорирует изолированные объекты, поэтому обновляет страницу при обновлении. Я не вижу флажки в вашем коде, но думаю, что они находятся где-то в функции «transition_matrix». –
На этом этапе я не знаю, как добавить флажки, чтобы они были «изолированы», но запускались с помощью кнопки. Добавляю ли я его в реактивную функцию «bigmatrix»? Если да, то как мне «запустить» его с помощью кнопки? Извините, я действительно новичок в R .. – gmarais