R中的renderUI不会显示

时间:2017-10-11 16:16:19

标签: r shiny

有时我们想将内容放在uiOutput / renderUI中。但这并不总是奏效。例如,下面的例子。在我看来,代码#1和代码#2应该给我相同的GUI。但是,代码#2无法按预期工作。谁能告诉我原因?谢谢!

代码#1:

library(shiny)

ui <- navbarPage("test",
                 navbarMenu("More",
                            tabPanel("Table"
                            )
                 )
)

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

shinyApp(ui = ui, server = server)

代码#2:

library(shiny)

ui <- navbarPage("test",
           uiOutput("ui_data")
)

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

  output$ui_data <- renderUI({
    navbarMenu("More",
               tabPanel("Table"
               )
    )
  })

})

shinyApp(ui = ui, server = server)

2 个答案:

答案 0 :(得分:1)

在第二个示例中,uiOutputnavbarMenu的内容包含在具有类"shiny-html-output"的div中。但是,此类的Div不允许作为navbarPage的参数。 AFAIK,有两种解决方法

第一种是在服务器端创建整个navbarPage

library(shiny)

ui <- uiOutput("page")

server <- shinyServer(function(input, output, session) {
  output$page <- renderUI({
    navbarPage("test", navbarMenu("More", tabPanel("Table")))
  })
})

shinyApp(ui, server)

另一个是仅创建服务器中tabPanel的内容

library(shiny)

ui <- navbarPage(
  "test", 
  navbarMenu("More", tabPanel("Table", uiOutput("tab_content")))
)

server <- shinyServer(function(input, output, session) {
  output$tab_content <- renderUI({
    "Some content"
  })
})

shinyApp(ui = ui, server = server)

答案 1 :(得分:1)

请先尝试设置您的工作目录,如下例所示。

<块引用>

setwd("c:/Users/ID/Desktop/folder")

您应该获得包含 ui.R 和 server.R 位置的工作目录。