[英]Column Names in Dropdown R Shiny SelectInput from data base
我正在使用以下代码用数据库值填充下拉列表:-
服务器
sqlOutputAssetClass <- reactive({
sqlInputAssetClass<- paste("select distinct ASSET_CLASS from DUMMY_TABLE",sep="")
dbGetQuery(con, sqlInputAssetClass)
})
sqlOutputFeedSrcSys <- eventReactive(input$pick_assetclass, {
sqlInputFeedSrcSys<- paste("select distinct FEED_SRC_SYS from DUMMY_TABLE where ASSET_CLASS=",
"'",
input$pick_assetclass,"'",sep="")
dbGetQuery(con,sqlInputFeedSrcSys)
})
observe ({
updateSelectInput(session,"pick_assetclass","ASSET CLASS",
choices = sqlOutputAssetClass())
})
observe ({
updateSelectInput(session,"pick_feedsrcsys","FEED SOURCE SYSTEM",
choices = sqlOutputFeedSrcSys())
})
用户界面
selectInput('pick_assetclass',label ='Asset Class',
choices=NULL,selected = NULL, multiple = FALSE,width="450px"),
selectInput('pick_feedsrcsys',label ='Feed Src Sys',
choices=NULL,selected = NULL, multiple = FALSE,width="450px"),
我看到下拉列表中填充了值,但也填充了数据库表中的列名。 另一个奇怪的事情是,当下拉列表中只有一个值时,该值不会显示,但会显示列名称。
您能否让我知道如何解决这些问题?
谢谢,
这不是答案,而是扩展的评论。
为了查看传递给updateSelectInput
值是什么,您可以像这样在更新之前对browser()
进行调用
observe ({
choices = sqlOutputAssetClass()
browser()
updateSelectInput(session,"pick_assetclass","ASSET CLASS",
choices = sqlOutputAssetClass()
)
})
这将打开一个交互式控制台,您可以在其中打印您的选择以及所有其他输入/反应,并查看需要进行哪些更改才能将其转换为没有标签,属性或名称的“裸”字符字符串。 该控制台将阻塞该控制台,直到您单击“下一步”为止,并且在运行observe
块时将重新打开该控制台。
您最终要传递给更新功能的对象应如下所示
choices <- c("FX", "CS", "AT", "FUTURES")
从?selectInput
:
选择:...这也可以是一个命名列表,其元素是(命名或未命名的)列表或向量。 在这种情况下,最外面的名称将用作相应子列表中元素的“ optgroup”标签。 这使您可以对相似的选项进行分组和标记。 ...
因此,在您的情况下, dbGetQuery
可能返回命名的向量。 只需通过unname
运行它以unname
那些名称,然后再从sqlOutputAssetClass
返回,类别名称应消失:
sqlOutputAssetClass <- reactive({
sqlInputAssetClass<- paste("select distinct ASSET_CLASS from DUMMY_TABLE",sep="")
unname(dbGetQuery(con, sqlInputAssetClass))
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.