【问题标题】:Shiny dynamic + filtered dataframe/table output with MySQL connection带有 MySQL 连接的闪亮动态 + 过滤数据帧/表输出
【发布时间】:2019-07-27 17:51:03
【问题描述】:

基本上,我试图通过向 MySQL 查询来在 R 中显示一个数据框。

我有两个过滤器,数据框/表的值会根据这些过滤器而有所不同。该表根据用户选择的过滤器是反应式的。

用户界面

ui <- fluidPage(fluidRow(
column(4,radioButtons("Stocks", "Stock Number",
choices = c(1: 2),selected='1')),

column(4,radioButtons("Funds", "Fund Name",
choices = list("W" = 1, "L" = 2),selected='1')),

column(4,checkboxGroupInput("Position", "Market Position", 
choices = c(1:5))),

tableOutput("values")
)

服务器

server <- function(input, output) 
{    
 tableValues<-reactive({
 df<-dbSendQuery(mydb,paste0("SELECT STOCKS,FUNDS,POSITION,INVESTMENTS FROM 
 SUMMARY WHERE USERNAME='1223' and STOCKS=",input$Stocks," AND 
 FUNDS='",input$Funds,"' 
 AND POSITION=",input$position,";"))
 return(df)
 })

output$values <- renderTable({
tableValues()})

}

这是我现在拥有的,但这似乎不起作用。关于如何显示数据框/表并根据选择的过滤器使其具有反应性的任何建议?

谢谢!

【问题讨论】:

  • 似乎不起作用 - 实际错误是什么或发生了什么?此查询是否在非闪亮(交互式)环境中工作?
  • 它标记一个错误-“无法将类'结构(“MySQLResult”,包=“RMySQL”)'强制转换为data.frame”。还有其他方法可以显示表格吗?

标签: mysql r dataframe shiny reactive


【解决方案1】:

错误:error- "cannot coerce class 'structure("MySQLResult", package = "RMySQL")' to a data.frame"。那是因为您没有 fetched 数据。

server <- function(input, output) 
{    
 tableValues<-reactive({
 query<-dbSendQuery(mydb,paste0("SELECT STOCKS,FUNDS,POSITION,INVESTMENTS FROM 
 SUMMARY WHERE USERNAME='1223' and STOCKS=",input$Stocks," AND 
 FUNDS='",input$Funds,"' 
 AND POSITION=",input$position,";"))
 df = fetch(query, n = -1)
 return(df)
 })

output$values <- renderTable({
tableValues()})

}

https://www.rdocumentation.org/packages/DBI/versions/0.2-1/topics/dbSendQuery

【讨论】:

  • 当我有多个输入(如复选框)时,这也会起作用吗?
  • 理想情况下应该是这样,因为无论如何这些都是您查询部分的一部分。
  • checkboxGroupInput 返回值,例如 - [1] "1" "2" "3" 如果我​​们选择前三个数字。所以不得不将其更改为可以正常工作的单选按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 2017-05-05
  • 2021-04-25
  • 2018-02-13
  • 2018-02-04
相关资源
最近更新 更多