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 代码

如何使用在renderUI的selectInput中选择的选项在主面板中生成不同的输出?

将反应输入传递到 R Shiny 中的绘图轴

如何将 CSS Selector 的输出传递给美丽的汤?