使用namespace
(命名空间)功能来为每个Shiny应用程序实例创建唯一的命名空间,从而避免链接问题。以下是示例代码:
# 第一个Shiny应用程序实例
library(shiny)
ui <- fluidPage(
textInput("txt", "输入文字", ""),
verbatimTextOutput("out")
)
server <- function(input, output) {
output$out <- renderText({
input$txt
})
}
# 创建第一个Shiny应用程序实例的命名空间
ns1 <- shiny::NS("test1")
# 在第一个Shiny应用程序实例内命名空间中使用UI和服务器
ui <- tagList(
ns1(fluidPage(
textInput(ns1("txt"), "输入文字", ""),
verbatimTextOutput(ns1("out"))
))
)
server <- function(input, output, session) {
output$out <- renderText({
input$txt
})
}
# 启动第一个Shiny应用程序实例
shinyApp(ui, server)
# 第二个Shiny应用程序实例
library(shiny)
ui <- fluidPage(
textInput("txt", "输入文字", ""),
verbatimTextOutput("out")
)
server <- function(input, output) {
output$out <- renderText({
input$txt
})
}
# 创建第二个Shiny应用程序实例的命名空间
ns2 <- shiny::NS("test2")
# 在第二个Shiny应用程序实例内命名空间中使用UI和服务器
ui <- tagList(
ns2(fluidPage(
textInput(ns2("txt"), "输入文字", ""),
verbatimTextOutput(ns2("out"))
))
)
server <- function(input, output, session) {
output$out <- renderText({
input$txt
})
}
# 启动第二个Shiny应用程序实例
shinyApp(ui, server)
在上面的示例中,我们为每个Shiny应用程序实例创建了唯一的