簡體   English   中英

R Shiny SQLite App 中的對象對象錯誤

[英]object Object error in R Shiny SQLite App

我正在嘗試使用 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")
    )
  )
)

數據幀不應該與用戶界面上呈現textOutputtableOutput 然后調整對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返回一個排和一列數據幀,那么你可以使用renderTextservertextOutputui 但從列中提取值:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM