r - 在 Shiny 应用程序中创建数据表时出错
问题描述
我正在使用闪亮的应用程序创建仪表板。仪表板的数据来自数据库。这是我的代码:
library(shiny)
library(DBI)
library(RODBC)
ui <- fluidPage( titlePanel(title=(div(tags$a("Annual Report"))), windowTitle = "Annual Report"),
sidebarLayout(
sidebarPanel(
selectInput("GEOGRAPHY","SELECT GEOGRAPHY",choices = 'GEOGRAPHY')
) ,
mainPanel(tableOutput("tbl")
)
)
)
server <- function(input, output,session) {
output$tbl <- renderTable({
conn1 <- odbcConnect("database name", pwd = "pwd")
tbl1 <- sqlQuery(conn1, paste("select * from tablename"))
})
}
shinyApp(ui, server)
这是我的输出: 1:https ://i.stack.imgur.com/MWvQj.png 在此处输入图像描述 侧栏和主面板正在显示,但是当我单击下拉菜单时,数据并未从表中提取。选择 GEOGRAPHY 意味着它必须给出 GEOGRAPHY 中的所有选项。在选项中,如果我提到选项 = tbl$'GEOGRAPHY' 它找不到 sys 对象。我不想手动输入选项,因为有几个值。从下拉列表中我必须选择。
解决方案
也许您可以使用在您的数据可用后updateSelectInput
进行更改。choices
tbl1
我还在odbcClose
查询后添加,subset
因此显示的表格将根据所选GEOGRAPHY
选项显示结果。
编辑:您可以将“全部”选项添加到您的selectInput
. 如果选择“全部”,则将显示所有数据。否则,它将过滤选择。
server <- function(input, output, session) {
tbl1 <- reactive({
conn1 <- odbcConnect("database name", pwd = "pwd")
data <- sqlQuery(conn1, paste("select * from tablename"))
odbcClose(conn1)
data
})
output$tbl <- renderTable({
if (input$GEOGRAPHY != "All") {
subset(tbl1(), GEOGRAPHY == input$GEOGRAPHY)
} else {
tbl1()
}
})
observe({
updateSelectInput(session, "GEOGRAPHY", choices = c("All", tbl1()$GEOGRAPHY))
})
}
推荐阅读
- html - 在 HTML 中转义 powershell 变量
- spring - spring boot 应用程序实际上在端口 0 上运行,而不是随机运行
- r - 修改 base::quit 默认值
- c# - 如何在 Kentico 开发过程中暴露错误
- mongodb - 如何用父文档展平动态字段 - Spring data Mongo DB
- origen-sdk - 如何使用 2.5/2.6 等更新的 Ruby 版本运行 origen?
- navigation - 消费 OpenRouteService 方向结果
- r - 为什么'rbind.data.frame'将日期转换为数字?
- python - 分配给列表的 Pythonic 方式
- apache-flink - Flink 1.7.2 start-scala-shell.sh 找不到或无法加载主类 org.apache.flink.api.scala.FlinkShell