Shiny для запросов RQDA
Я пытаюсь создать динамические результаты на основе качественного анализа данных, который я недавно завершил. Мне нужны пользователи, чтобы сделать выбор в Shiny. Исходя из этого, мне нужно выполнить запрос в RQDA с использованием SQLite.
Я смотрел несколько видео о повторной активации входов в Shiny, но все, что я пытался применить, не сработало. Я пытался создать текстовый блок команд SQLite для моего запроса, используя paste() и paste0(), но из-за блеска мне это не удалось выполнить.
Код интерфейса
library(shiny)
library(igraph)
library(sqldf)
library(RQDA)
library(DBI)
# Open the project
openProject("C:/SWOT Analysis/Qual Analysis of SWOTs.rqda")
# Get the table required for inputs
db <- dbConnect(SQLite(), dbname="Qual Analysis of SWOTs.rqda")
# Read in the inputs
codeCat <- dbReadTable(db, "codecat")[which(dbReadTable(db,"codecat")$status==1),c(3,1)]
# Set to a vector format for shiny
codeCat1 <- setNames(codeCat$catid, codeCat$name)
ui <- fluidPage(
tabsetPanel(
tabPanel(title = "2 Categories",
tags$h1("Compare two coded categories"),
wellPanel(selectInput(inputId = "Opt1",
label = "Select the first category",
choices = codeCat1,
selected = codeCat1[1]),
selectInput(inputId = "Opt2",
label = "Select the second category",
choices = codeCat1,
selected = codeCat1[2])),
textOutput(outputId = "cat2"),
plotOutput(outputId = "pcat2"),
tableOutput(outputId = "tbl")
)))
Разъединить код
server <- function(input, output, session){
output$cat2 <- renderText({paste(input$Opt1, "and", input$Opt2, "have been selected.")})
a <- renderText({paste("SELECT codecat.name, freecode.name FROM codecat, freecode, treecode WHERE codecat.catid=treecode.catid AND freecode.id=treecode.cid AND treecode.status=1 and treecode.catid = ", input$Opt1, "or codecat.catid=treecode.catid AND freecode.id=treecode.cid AND
treecode.status=1 and treecode.catid = ", input$Opt2)})
# testing to see if the RQDA query works - this did
output$tbl <-renderTable({RQDAQuery(paste("SELECT codecat.name, freecode.name FROM codecat, freecode, treecode WHERE codecat.catid=treecode.catid AND freecode.id=treecode.cid AND treecode.status=1 and treecode.catid = ", input$Opt1, "or codecat.catid=treecode.catid AND freecode.id=treecode.cid AND
treecode.status=1 and treecode.catid = ", input$Opt2))})
# this will be used for plotting after doing clusters later
# edges <- RQDAQuery(a())
on.exit(DBI::dbDisconnect(db))
}
Предупреждение: ошибка в.getReactiveEnvironment()$currentContext: операция не разрешена без активного реактивного контекста. (Вы пытались сделать что-то, что может быть сделано только внутри реактивного выражения или наблюдателя.) Это сообщение об ошибке, которое я получаю - я знаю, что делаю что-то явно неправильное, но, похоже, я не вижу этого!
1 ответ
Я нашел ответ на свой собственный вопрос с помощью модулей в Shiny - недавно я обнаружил эти ссылки на модули в R и перестроил построенное приложение Shiny на основе этого, и все, кажется, работает нормально.
Модуляризация связи между блестящими приложениями между модулями
Спасибо!