【问题标题】:How to create a reactive data searching in R shiny?如何在 R Shiny 中创建响应式数据搜索?
【发布时间】:2020-12-26 04:12:54
【问题描述】:

我想根据用户输入呈现数据。但我面临的问题是,如果用户改变他的选择,我的变量不会根据我正在搜索的数据而改变。例如,如果姓名从 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) 

【问题讨论】:

    标签: r shiny shiny-server shinyapps shiny-reactivity


    【解决方案1】:

    您的代码有很大的改进空间。问题:

    • ui 没有被括号括起来
    • 你应该只在ui中使用ui函数,而不是原始的paste
    • server 函数未包含您要使用的所有函数
    • sqlStatement &lt;- sprintf("SELECT DISTINCT Field2 FROM Tastetable WHERE Field1 = '%s'", nameSearch) 不在反应式上下文中

    请查看introduction to shiny

    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) 
    
    

    【讨论】:

      猜你喜欢
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      相关资源
      最近更新 更多