首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >uiOutput和renderUI不工作(R闪亮)

uiOutput和renderUI不工作(R闪亮)
EN

Stack Overflow用户
提问于 2020-06-10 06:22:50
回答 1查看 177关注 0票数 0

我正在创建一个应用程序,创建一个简单的字符串列表(actives$name),并向我展示这些字符串。因为某种原因,它不起作用。下面是代码:

代码语言:javascript
复制
library(shiny)

ui <- fluidPage(

  sidebarLayout(
    mainPanel(
      textInput(inputId = "name", label = "Name", value = "foo"),
      actionButton(inputId = "add", label = "Add")
    ),
    sidebarPanel(
      uiOutput("activeB")
    )
  ),

)

server <- function(input, output, session) {

  actives <- reactiveValues()

  observeEvent(input$add,{
    actives$name <- c(actives$name, input$name)
  })

  output$activeB <- renderUI({
    for (i in 1:length(actives$name)) {
      p("Name:")
      verbatimTextOutput(actives$name[i])
      print(actives$name[i])
    }
  })

}

shinyApp(ui = ui, server = server)

我在for循环中使用的for显示了正确的结果,因此它“知道”我要做什么。只是不输出而已。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 06:58:54

有意思的那个。我花了几次时间去拿。您需要将renderUI输出包装在tagList

代码语言:javascript
复制
  output$activeB <- renderUI({
    tagList(HTML(paste(actives$name, collapse="<br>")))
  })

两项意见:

  • 您的演示代码永远不会工作,因为调试print循环是renderUI中的最后一条语句,因此renderUI从不返回任何内容。(
  • 你知道你不用求助于uiOutputrenderUI就能得到同样的效果,对吗?我假设您已经将实际用例简化为关注这个问题--在这种情况下,谢谢!:)

完整代码:

代码语言:javascript
复制
library(shiny)

ui <- fluidPage(
  sidebarLayout(
    mainPanel(
      textInput(inputId = "name", label = "Name", value = "foo"),
      actionButton(inputId = "add", label = "Add")
    ),
    sidebarPanel(
      uiOutput("activeB")
    )
  )
)

server <- function(input, output, session) {
  actives <- reactiveValues(
    name=c()
  )
  observeEvent(input$add,{
    actives$name <- c(actives$name, input$name)
  })
  output$activeB <- renderUI({
    tagList(HTML(paste(actives$name, collapse="<br>")))
  })
}

shinyApp(ui = ui, server = server)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62297090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档