有时我们想将内容放在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)
答案 0 :(得分:1)
在第二个示例中,uiOutput
将navbarMenu
的内容包含在具有类"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 位置的工作目录。