отфильтрованные данные по функциям - PullRequest
0 голосов
/ 06 января 2019

Я использую набор данных (lst), полученный из таблицы mysql.

на основе ввода данных Я применяю фильтр

dateRangeInput("daterange", "Date Range", start = min(lst$Record_Date), end = max(lst$Record_Date))


observeEvent(input$daterange, {
  st <- input$daterange[1]
  ed <- input$daterange[2]

  lst  <- lst %>%
    filter(Record_Date >= st &
           Record_Date <= ed)

}) 

когда я использую отфильтрованный «lst» в другой функции, «lst» снова оказывается нефильтрованным.

я должен вместо этого поместить отфильтрованные данные в новый фрейм данных?

Я пытался избежать этого, чтобы уменьшить использование памяти.

Thx

1 Ответ

0 голосов
/ 07 января 2019

Возможно, вам будет интересно познакомиться с правилами и средами видимости для блестящих приложений.

Когда вы пишете «другая функция», вы, вероятно, имеете в виду и эту функцию observeEvent(). Затем это другая среда, и вам придется передавать данные в другую среду.

Ваш пример:

 # inital data
 lst <- ...

filteredLst <- reactive(
  input$daterange
  isolate({
    st <- input$daterange[1]
    ed <- input$daterange[2]

    lst  <- lst %>%
      filter(Record_Date >= st &
            Record_Date <= ed)
    lst
  })
})

observe({
  lst # old data
  lst <- filteredLst() # filtered data in new environment
})

Сведения о передаче данных между средами и реактивностью:

https://shiny.rstudio.com/articles/reactivity-overview.html

Подробная информация о сфере охвата:

«От того, где вы определите объекты, будет зависеть, где объекты будут видны.»

Подробное объяснение можно найти здесь: https://shiny.rstudio.com/articles/scoping.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...