如何解决如何在R Shiny中创建反应式数据搜索?
我想根据用户输入显示数据。但是我面临的问题是,如果用户更改选择,我的变量不会根据我正在搜索的数据而改变。例如,如果名称从a更改为b,则年龄不变。谁能提供任何解决方案?谢谢。
library(shiny)
library(DBI)
library(RSQLite)
con <- dbConnect (SQLite(),"/user/xyz.db")
ui <- fluidPage(
selectInput("name","What is your name? ",choice = c("a","b","c"))
paste("Age is:"),textOutput("ageout")
server <- shinyServer (function(input,output,session) {
observeEvent(input$name,{
nameSearch <- input$name
})
sqlStatement <- sprintf("SELECT DISTINCT Field2 FROM Tastetable WHERE Field1 = '%s'",nameSearch)
output$ageout <- renderText ({
paste(dbGetQuery(con,sqlStatement))
)}
shinyApp (ui = ui,server = server)
解决方法
您的代码有很大的改进空间。问题:
-
ui
未被方括号括起来 - 您应该仅在
ui
中使用ui函数,而不是原始的paste
-
server
函数未包含您要使用的所有函数 -
sqlStatement <- sprintf("SELECT DISTINCT Field2 FROM Tastetable WHERE Field1 = '%s'",nameSearch)
不在被动上下文中
library(shiny)
library(DBI)
library(RSQLite)
con <- dbConnect (SQLite(),"/user/xyz.db")
ui <- fluidPage(
selectInput("name","What is your name? ",choice = c("a","b","c")),span("Age is:"),textOutput("ageout")
)
server <- shinyServer (function(input,output,session) {
sqlStatement <- eventReactive(input$name,{
nameSearch <- input$name
sprintf("SELECT DISTINCT Field2 FROM Tastetable WHERE Field1 = '%s'",nameSearch)
})
output$ageout <- renderText ({
dbGetQuery(con,sqlStatement())
)}
}
shinyApp (ui = ui,server = server)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。