R SQLite应用程序中的对象错误
我正在尝试开发一个带有SQLite数据库的R闪亮应用程序。但是当我从数据库中获取任何数据时,我会遇到这个错误。错误消息是:R SQLite应用程序中的对象错误,sql,r,sqlite,shiny-server,shinyapps,Sql,R,Sqlite,Shiny Server,Shinyapps,我正在尝试开发一个带有SQLite数据库的R闪亮应用程序。但是当我从数据库中获取任何数据时,我会遇到这个错误。错误消息是: 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’:
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数据库有什么建议吗
代码如下:
#库
图书馆(统计)
图书馆(闪亮)
图书馆(RSQLite)
图书馆(dtplyr)
图书馆(dplyr)
图书馆(DBI)
#全局变量
db数据帧不应在用户界面上以textOutput
呈现,而应以tableOutput
呈现。然后将被动调用调整为可渲染的。通常,input$
对象应该包装在reactive
中。此外,考虑适当的参数化,如:用:
服务器调整
...
# 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
返回一行一列的数据帧,那么您可以在server
中使用renderText
,在ui
中使用textOutput
。但从列中提取值:
dbGetQuery(db, query)$Solubility[[1]]
不应使用textOutput
在用户界面上呈现数据帧,而应使用tableOutput
在用户界面上呈现数据帧。然后将被动调用调整为可渲染的。通常,input$
对象应该包装在reactive
中。此外,考虑适当的参数化,如:用:
服务器调整
...
# 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
返回一行一列的数据帧,那么您可以在server
中使用renderText
,在ui
中使用textOutput
。但从列中提取值:
dbGetQuery(db, query)$Solubility[[1]]
亲爱的冻糕,非常感谢您的解决方案。它真的很有效!!!但是如果我想在“sql”中使用两个变量呢。我该怎么办?我尝试了与使用?ppc相同的方法,我使用了?prop而不是溶解度,但是当sql中有两个变量时,只有一个有效。您有什么建议吗?您不能参数化标识符,如表名和列名,只能使用文字值。使用粘贴
或其他字符串插值作为标识符。亲爱的帕菲,非常感谢您的解决方案。它真的很有效!!!但是如果我想在“sql”中使用两个变量呢。我该怎么办?我尝试了与使用?ppc相同的方法,我使用了?prop而不是溶解度,但是当sql中有两个变量时,只有一个有效。您有什么建议吗?您不能参数化标识符,如表名和列名,只能使用文字值。对标识符使用粘贴或其他字符串插值。