R Shiny SQLite应用程序中的对象对象错误

问题描述

我正在尝试使用sqlite数据库开发R Shiny应用程序。但是我从数据库获取任何数据时都遇到此错误错误消息是:

Loading required package: shiny
Attaching package: ‘dplyr’
The following objects are masked from ‘package:stats’:
    filter,lag
The following objects are masked from ‘package:base’:
    intersect,setdiff,setequal,union**

应用内显示

[object Object]

有人可以帮助我吗?您对开发sqlite数据库有什么建议吗?

代码如下:

# Libraries
library(stats)
library(shiny)
library(Rsqlite)
library(dtplyr)
library(dplyr)
library(DBI)

# Globar Variables 
db <- dbConnect (sqlite(),"/Users/sudiptobosu/200922/20200714PPCP.sqlite")

# Global Function
names_ppcp = dbGetQuery(db,"SELECT ALL PPCP FROM mydata")

#server
shinyServer(function (input,output,session) {
  dplyr::filter
  stats::filter
  
  output$ppcpOut <- reactive({
    input$user1
  })  

  output$propertyOut <- reactive({
    input$user2
  })

  ppcpquery <- reactive({
    input$user1
  })

  queryy <- reactive({
    gsub("<ppc>",ppcpquery(),"SELECT Solubility FROM mydata WHERE PPCP = '<ppc>'")
  })

  output$valueout <- reactive({
    dbGetQuery(db,queryy())
  })

  #propertyquery <- eventReactive ({input$user2})  

  session$onSessionEnded (function() {
    dbdisconnect(db)
  })
})

#ui
ui <- fluidPage ( 
  titlePanel("bo-DEREC CE"),sidebarLayout( 
    sidebarPanel(
      selectInput("user1","Select the PPCP",choices = names_ppcp),selectInput("user2","Select the property",choices = c("Solubility","Volatility","Adsorbability","Degradability"))
    ),mainPanel(
      textoutput("ppcpOut"),textoutput("propertyOut"),textoutput("valueout")
    )
  )
)

解决方法

数据帧不应使用textOutput呈现在用户界面上,而应使用tableOutput呈现。然后将响应呼叫调整为renderTable。通常,input$对象应该包装在reactive中。另外,请考虑正确进行参数设置,例如使用DBI:sqlInterpolate

服务器调整

...

# INPUTS
ppcpquery <- reactive({
  input$user1
})

propertyquery <- reactive({
  input$user2
})

# OUTPUTS
output$ppcpOut <- renderText({
    ppcpquery()
})  

output$propertyOut <- renderText({
    propertyquery()
})

output$valueOut <- renderTable({
  # PREPARED STATEMENT WITH PLACEHOLDER
  sql <- "SELECT Solubility FROM mydata WHERE PPCP = ?ppc")

  # BIND PARAMETER
  query <- DBI::sqlInterpolate(db,sql,ppc = ppcpquery())

  # RUN QUERY AND RETURN RESULTS
  dbGetQuery(db,query)
})

用户界面调整

...

mainPanel(
  textOutput("ppcpOut"),# ALIGNS TO renderText
  textOutput("propertyOut"),# ALIGNS TO renderText
  tableOutput("valueOut")        # ALIGNS TO renderTable
)

现在,如果dbGetQuery返回一个单行单列数据帧,则可以在renderText中使用server,在textOutput中使用ui 。但是从列中提取值:

dbGetQuery(db,query)$Solubility[[1]]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...