【问题标题】:Rshiny: How to pass renderUI output to chocies parameter in SelectinputRshiny:如何将 renderUI 输出传递给 Selectinput 中的 chocies 参数
【发布时间】: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") )))

【问题讨论】:

  • 您能否发布一个可重现的示例,也许明确定义一个数据框,例如被拉下的数据框?

标签: r shiny


【解决方案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,非常有帮助
猜你喜欢
  • 2022-07-27
  • 2014-01-30
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多