创建函数以在Shiny中输出

时间:2018-12-03 09:11:17

标签: r function shiny shinydashboard

我对Shiny应用程序中的输出功能有疑问。是否可以编写一个以变量为名称的输出函数以多次使用?

例如简短摘录:

  output$MainBody <- renderUI({
    fluidPage(
      gradientBox(
        title = "Test",
      )
    )
  })

是否可以使用如下功能:

dt_representation <- function(x){
      output$x <- renderUI({
        fluidPage(
          gradientBox(
            title = "Test",
          )
        )
      })
}

并通过以下方式调用此功能:

dt_representation(MainBody)

这是否可行,或者在Shiny中不起作用?

1 个答案:

答案 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)