r shiny sqlquery - 从 sql 查询结果中填充复选框

Posted

技术标签:

【中文标题】r shiny sqlquery - 从 sql 查询结果中填充复选框【英文标题】:r shiny sqlquery - populating checkbox from sql query results 【发布时间】:2016-04-25 15:17:30 【问题描述】:

在使用 SQL 查询的结果填充 R 闪亮复选框时,我需要帮助。

下面是完整代码和问题的具体描述:

library(shiny)
library(RODBC)

dbhandle <- odbcDriverConnect('driver=SQL Server;server="" ;database="";trusted_connection=true')
res <- sqlQuery(dbhandle, 'select name from analysis order by name asc')

shinyUI(fluidPage(
    mainPanel(
    textOutput("text1"),
    checkboxGroupInput("checkGroup", 
                       label = h3("Choose contracts"), 
                       choices = res$name,
                       selected = NULL),
    actionButton("action", label = "Create Portfolio EP")
    )

))

library(shiny)
shinyServer(function(input, output) 
  observe(
    if(input$action>0 & input$action<=2)
      valores<-renderText(
        input$checkGroup
      )
      data<-unlist(strsplit(valores(), split=" "))
      print(data)
    
  )
)

问题是复选框返回这个:

1
2

而sql中的sql结果是这样的:

   name
1  a
2  b 

所以看起来需要对结果进行格式化,以便 R 正确捕获。

有什么想法吗?

谢谢。

【问题讨论】:

【参考方案1】:

如果您阅读了 checkboxGroupInput 的文档,就会发现 choices 参数是这样的

显示复选框的值列表。如果列表的元素是 命名然后向用户显示该名称而不是值。

所以你需要做的就是将sql结果转换为未命名的结构,或者手动将名称设置为NULL。

【讨论】:

您好,感谢您的意见。我试过这个:'choices = c("Acuity" = res[1,1]' 它返回“Acuity”而不是“1”。但是问题是列表可能会改变,我必须以某种方式自动化它。我'不确定如何将 sql 结果转换为未命名的结构..? 我做了这个改变:- rownames(res) 我认为你可以使用as.vector(res$name) 非常感谢!!我可以再问一个问题吗?现在我想在界面上显示 res$name,但是在单击它时将值存储为 res$ID。我现在已经尝试了一切。我无法弄清楚语法。请问有什么想法吗? @warmoverflow 不是很清楚你想做什么。 res$name 是您数据中的一列,因此 res$ID 将是另一列。当您说“将值存储为 res$ID”时,您的意思是要将检查的值存储到 res$ID 中吗?这可能是不可能的,因为checkboxGroupInput 只返回检查值,因此它可能比原始列短。

以上是关于r shiny sqlquery - 从 sql 查询结果中填充复选框的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式构建 SQL 查询 R/Shiny/RODBC

使用 rodbc 包从 R 查询 sql server。需要将日期/时间值作为 where 语句的一部分传递到 sqlQuery

R Shiny 将 TextInput 的内容放入 sql 查询中

我的 R 代码没有从 SQL Server 获取数据

RODBC-一个sqlQuery()调用中的多个表[重复]

如何从 R/Shiny 应用程序下载多个文件?