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 查询结果中填充复选框的主要内容,如果未能解决你的问题,请参考以下文章
使用 rodbc 包从 R 查询 sql server。需要将日期/时间值作为 where 语句的一部分传递到 sqlQuery