Используйте textInput как часть запроса в dbGetquery () в flexdashboard - PullRequest
0 голосов
/ 03 июля 2019

Я хочу включить текстовый ввод как часть запроса в dbGetquery (). Он показывает результаты в обычном R-скрипте, но показывает ошибку в renderTable ().

library(flexdashboard)
suppressWarnings(library(ROracle, quietly = TRUE))
library(shiny)

Column {data-width=350}
-----------------------------------------------------------------------
textInput(inputId = 'Col', label = 'COL', value = "")
actionButton('submit', 'Submit', icon = icon('refresh'))


Column {data-width=650}
-----------------------------------------------------------------------
session <- observeEvent(input$submit, {
  etf_con<- dbConnect(drv, username = load.schema.username, password = load.schema.password, dbname = load.schema.database)
  t <- dbGetQuery(etf_con, paste0("select * from table_name where col = '", input$Col, "'"))
})

renderTable({
  t
})

Ошибка во втором столбце:

не может привести класс '"function" к data.frame

Я также пытался удалить observeEvent и только с renderTable. Как это:

renderTable({
  etf_con<- dbConnect(drv, username = load.schema.username, password = load.schema.password, dbname = load.schema.database)
  dbGetQuery(etf_con, paste0("select * from table_name where col = '", input$Col, "'"))
})

Когда я нажимаю «Запустить документ», названия столбцов отображаются в правом столбце. После того, как я поставил текстовый ввод, возникает ошибка:

нечисловой аргумент бинарного оператора

1 Ответ

0 голосов
/ 09 июля 2019

Похоже, мне понадобился заполнитель для реактивного значения, поэтому я просто добавил v <- reactiveValues(t = NULL) и использовал t в качестве одного из элементов в списке v. Вот ссылка http://shiny.rstudio.com/articles/action-buttons.html. Я использовал Pattern 3.

library(flexdashboard)
suppressWarnings(library(ROracle, quietly = TRUE))
library(shiny)

Column {data-width=350}
-----------------------------------------------------------------------
textInput(inputId = 'Col', label = 'COL', value = "")
actionButton('submit', 'Submit', icon = icon('refresh'))


Column {data-width=650}
-----------------------------------------------------------------------
v <- reactiveValues(t = NULL)

observeEvent(input$submit, {
  etf_con<- dbConnect(drv, username = load.schema.username, password = load.schema.password, dbname = load.schema.database)
  v$t <- dbGetQuery(etf_con, paste0("select * from table_name where col = '", input$Col, "'"))
})

renderTable({
  v$t
})
...