Создать функцию для вывода в Shiny - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть вопрос о функции вывода в приложении 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 голосов
/ 03 декабря 2018

Я бы настоятельно рекомендовал использовать модули, как сказал Свиная отбивная .
Но может случиться так, что иногда я использую такой маленький "хак":

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)
...