Rshiny:如何将 renderUI 输出传递给 Selectinput 中的 chocies 参数
Posted
技术标签:
【中文标题】Rshiny:如何将 renderUI 输出传递给 Selectinput 中的 chocies 参数【英文标题】:Rshiny: How to pass renderUI output to chocies parameter in Selectinput 【发布时间】:2015-11-27 07:03:32 【问题描述】:我正在尝试在 server.UI 中输入 renderUI 输出作为 selectInput 中的选择 = 参数的输入。原因是,我需要使用用户选择的值作为函数的输入。当我传递这些参数时,我看到的是名称、ID、attr 而不是值。下面是我的代码。感谢任何帮助。谢谢
server.r 列出了 pubmed 中的可搜索字段(例如:标题、所有字段、# UID 等)。这些列表需要为用户 UI 弹出,并且当他选择他感兴趣的字段时。选择需要传递给其他函数。
此时,代码运行但没有给我可搜索字段的列表并且无法通过任何选择。
server.R
shinyServer(
function(input, output)
output$Choose_Feild <- renderUI(
a = data.frame(entrez_db_searchable(db = "pubmed",
config = NULL))
unlist(a$FullName, use.names = FALSE)
))
ui.R
shinyUI(
fluidPage(
titlePanel(title = "My data "),
sidebarLayout(
sidebarPanel(
h3("Enter values"),
selectInput( inputId = "var_y",label = "Field" , choices =
uiOutput("Choose_Feild") )))
【问题讨论】:
您能否发布一个可重现的示例,也许明确定义一个数据框,例如被拉下的数据框? 【参考方案1】:你根本不能以这种方式使用renderUI
。
由于选择不依赖于任何输入,您可以直接传递选择:
library(shiny)
shinyUI(bootstrapPage(
selectInput(
inputId = "var_y", label = "Field" ,
choices = sapply(
rentrez::entrez_db_searchable(db = input$db, config = NULL),
function(x) x$FullName, USE.NAMES=FALSE
)
)
))
如果您想动态生成选择,例如基于另一个输入,您可以使用updateSelectInput
:
服务器.R
shinyServer(function(input, output, session)
observe(
choices <- sapply(
rentrez::entrez_db_searchable(db = input$db, config = NULL),
function(x) x$FullName, USE.NAMES=FALSE
)
updateSelectInput(session, "var_y", choices=choices)
)
)
ui.R
shinyUI(bootstrapPage(
selectInput(
inputId = "db", label="DB",
choices=c("pmc"="pmc", "pubmed"="pubmed")
),
selectInput(
inputId = "var_y", label = "Field" ,
choices = c()
)
))
【讨论】:
谢谢 Zero323,非常有帮助以上是关于Rshiny:如何将 renderUI 输出传递给 Selectinput 中的 chocies 参数的主要内容,如果未能解决你的问题,请参考以下文章
如何在R Shiny中使用renderUI触发renderDataTable进行输入?
R Shiny:将多个连续的反应传递给 selectInput
闪亮的模块和 renderUI 传递 javascript 代码