我在RStudio中有一个Shiny应用程序,它可以处理从mysql数据库中检索的数据。
与mysql的连接和查询都在应用程序外的文件中,因此我可以创建数据帧。
但是当我将连接复制到mysql并将sql查询复制到Shiny应用程序的server.R
时,应用程序会跳过查询并发出数据帧不存在的错误(Error : object 'tickets' not found
)。< / p>
因此,mysql查询可以在server.R
之外进行,但不能从server.R
进行。我做错了什么?
这是我的服务器示例.R和ui.R:
server.R
library(shiny)
library(RMySQL)
library(ggplot2)
#library(ggiraph)
library(lubridate)
##Connect to Redmine db
con <- dbConnect(MySQL(),
user = '#',
password = '#',
host = '#',
dbname='#')
tickets<-dbGetQuery(con, "Select * from table")
issues_speed_unique<-unique(na.omit(dbGetQuery(con,"Select * from table2")))
dbDisconnect (con)
some aggregations....
shinyServer(
function(input,output){
output$tickets_week<-renderPlot(
ggplot(data = subset(tickets,
ui.R
library(shiny)
library(ggplot2)
#library(ggiraph)
#library(htmltools)
library(lubridate)
shinyUI(fluidPage(
答案 0 :(得分:1)
问题是ui.R
在 server.R
之前运行,当然数据丢失了(因为数据在{中查询} {1}} - 因此错误)。
解决方案是将server.R
和server.R
的代码放在一个名为ui.R
的文件中。所以,在app.R
中,我按以下顺序编写了代码:
app.R
)代码library(packagename)
有关单个文件中的Shiny的更多信息 - shinyApp(ui = ui, server = server)
文件:http://shiny.rstudio.com/articles/single-file.html