Это продолжение этого вопроса:
Доступ к базе данных SQL с помощью shiny с реактивным запросом
Я пытаюсь создать фрейм данных из данных, полученных из базы данных SQL, с помощью блестящего приложения. В настоящее время я могу запросить базу данных и вернуть один набор данных. Теперь я хотел бы сохранить эти данные во фрейме данных, а затем добавить дополнительные данные из последующих запросов. Вот мой код:
UI
library(markdown)
shinyUI(fluidPage(
titlePanel("Generic grapher"),
sidebarLayout(
sidebarPanel(
numericInput("wafer", label = h3("Select wafer ID:"), value = NULL),
actionButton("do", "An action button")
),
mainPanel(
verbatimTextOutput("value"), verbatimTextOutput("que"), dataTableOutput(outputId="pos")
)
)
)
)
Сервер:
library(RMySQL)
library(DBI)
library(sqldf)
con = dbConnect(RMySQL::MySQL(), dbname="xx", username="pete", password="xx", host="xx", port=3306)
query <- function(...) dbGetQuery(con, ...)
wq = data.frame()
shinyServer(function(input, output){
d <- eventReactive(input$do, { input$wafer })
output$value <- renderPrint({ d() })
a <- reactive({ paste("Select id from wafer where wafer_id=",d(), sep="") })
output$que <- renderPrint({ a() })
wq <- reactive({ query( a() ) })
output$pos <- renderDataTable({ wq() })
})
Теперь я пытаюсь использовать информацию из этих двух ответов для хранения данных каждого поиска, который я выполняю во фрейме данных:
Добавить значения в реактивную таблицу блестящим цветом
В чем разница между реактивным значением и реактивным выражением?
Новый сервер:
library(RMySQL)
library(DBI)
library(sqldf)
con = dbConnect(RMySQL::MySQL(), dbname="xx", username="pete", password="xx", host="xx", port=3306)
query <- function(...) dbGetQuery(con, ...)
wq = data.frame()
shinyServer(function(input, output){
values <- reactiveValues()
values$df <- data.frame()
d <- eventReactive(input$do, { input$wafer })
output$value <- renderPrint({ d() })
a <- reactive({ paste("Select id from wafer where wafer_id=",d(), sep="") })
output$que <- renderPrint({ a() })
wq <- reactive({ query( a() ) })
values$df <- reactive({ rbind(values$df, wq() ) })
output$pos <- renderDataTable({ values$df })
})
Однако, когда я это делаю, таблица данных никогда не отображается в моем приложении. У меня нет сообщения об ошибке. Есть идеи, где я ошибаюсь? Любая помощь приветствуется!