我对Shiny应用程序中的输出功能有疑问。是否可以编写一个以变量为名称的输出函数以多次使用?
例如简短摘录:
output$MainBody <- renderUI({
fluidPage(
gradientBox(
title = "Test",
)
)
})
是否可以使用如下功能:
dt_representation <- function(x){
output$x <- renderUI({
fluidPage(
gradientBox(
title = "Test",
)
)
})
}
并通过以下方式调用此功能:
dt_representation(MainBody)
这是否可行,或者在Shiny中不起作用?
答案 0 :(得分:0)
我会强烈建议使用Pork Chop所说的模块。
但是有时我会使用这样的“ hack”:
library(shiny)
ui <- fluidPage(
uiOutput("all_id")
)
server <- function(input, output) {
# Define function
createUI <- function(x, text) {
output[[x]] <<- renderUI({
div(text)
})
}
# Use function
createUI("id1", "Here is my first UI")
createUI("id2", "Here is my second UI")
# Combine all in one
output$all_id <- renderUI({
do.call(fluidRow, lapply(c("id1","id2"), uiOutput))
})
}
shinyApp(ui = ui, server = server)