Обновление data.frame с помощью наблюдающего события - PullRequest
0 голосов
/ 04 февраля 2019

Люди!

Если у меня есть следующий фрейм данных:

observeEvent(input$pesquisa,{

    query <- glue(
      "select 
      cod_ordem_producao as ORDEM,
      dim_ext_tubo as DIAMETRO,
      esp_par_tubo as PAREDE,
      cod_aqa as AQA,
      tmo_ciclo_plan as CICLO,
      dth_criacao_reg as DATA,
      dsc_aco as GRAU,
      val_lim_escoamento as LE,
      val_tensao_residual as TR
      from
      QT_QTS.PLA_ORDEM_PRODUCAO
      where DIM_EXT_TUBO = {as.numeric(input$diametro)}
      and esp_par_tubo = {as.numeric(input$parede)}
      and tmo_ciclo_plan = {as.numeric(input$ciclo)}
      and dth_criacao_reg between DATE '{as.character(input$dates[1])}' and DATE '{as.character(input$dates[2])}'
      and VAL_LIM_ESCOAMENTO != 0
      order by DTH_CRIACAO_REG desc")

    df <- dbGetQuery(
      connection_reportUser,
      query
    )    

    df    <-------------- HERE IS THE SAVED VALUES TO THE DATA FRAME---------------
    valor_grau <- df$GRAU
})

И, затем, я использую еще одно наблюдениеEvent:

observeEvent(input$pesquisa, {

      insertUI(
        selector = "#pesquisa",
        where = "afterEnd",
        ui = selectInput(
          "grau",
          label = "Grau:",
          choices = valor_grau
        )
      )
    })

Объясняя: я ищув базе данных эти значения и сохранить в data.frame (называется "df").Когда я ищу его (с помощью ввода и нажатием кнопки «pesquisa»), для пользователя появляется новое поле под названием «Grau:» с новыми выбираемыми значениями.

Как я могу обновить «df»"со значением со второго входа?(в этом случае вход из «insertUI» называется «Grau:»

---------------- РЕДАКТИРОВАНИЕ ------------------------

В моем коде пользовательского интерфейса у меня есть: DT::dataTableOutput("contents2")

На стороне сервера у меня есть:

output$contents2 = DT::renderDataTable({
      tabela_saida})

Моим первым наблюдением за событием является описанное выше, и сохраните в моем df , после чего у меня будет:

tabela_saida = df

Второй наблюдатель должен обновить значение с именем GRAU в моем tabela_saida . Третий объект observEvent должен обновить AQA ... и т. д.

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

1 Ответ

0 голосов
/ 05 февраля 2019

Я думаю, что вы хотите обновить data.frame в соответствии с записью (grau).Для этого вы можете создать eventReactive, который будет выполнять ваш запрос.В пределах eventReactive вам нужно проверить, выбрал ли пользователь что-то в input$grau.

Это способ сделать это:

library(shiny)
library(DT)

ui <- fluidPage(
  mainPanel(
    actionButton(inputId = "pesquisa", label = "pesquisa"),
    conditionalPanel(condition = "input.pesquisa > 0", uiOutput("grau")),
    DT::DTOutput("contents2")
  )
)

server <- function(input, output) {

  create_df <- eventReactive(input$pesquisa,{

    ## Your query about here
    ## ...
    ##

    df <- data.frame(x = round(rnorm(100), 2), grau = rpois(100, lambda = 10))
    grau_values <- unique(df$grau)

    if(!is.null(input$grau)){
      grau_input <- input$grau

      df <- subset(df, grau %in% grau_input)
    } 

    return(list(df = df, grau_values = grau_values))
  })

  output$grau <- renderUI({
    grau_values <- create_df()$grau_values

    selectInput(inputId = "grau", label = "Grau:", multiple = TRUE, choices = grau_values, selected = NULL)
  })

  output$contents2 <- DT::renderDataTable({
    df <- create_df()$df

    datatable(df, rownames = FALSE)
  })
}

shinyApp(ui = ui, server = server)

Я надеюсь, что это работает!

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