Динамическое добавление полей в Shiny Dashboard напрямую - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь добавить несколько блоков в блестящий интерфейс на основе содержимого вектора.

Давайте начнем здесь:

library(shiny)

ui <- fluidPage(

   titlePanel("Dynamic Boxes"),

   fluidRow(
     uiOutput("boxes")
  )
)

server <- function(input, output) {

  output$boxes <- renderUI({
    interf <- ""
    for(i in 1:10){
      x = 1:100
      interf <- box(title = paste0("box ", i), 
          renderPlot(plot(x = x, y = x^i)))

    }
    interf
  })
}

shinyApp(ui = ui, server = server)

Показывает только последнее поле.Я не могу понять, как их объединить, а затем передать их клиентской стороне.

1 Ответ

0 голосов
/ 18 ноября 2018

box из пакета shinydashboard, который вы не загрузили (по крайней мере, в своем сообщении). В любом случае, вам нужен список элементов блока, который не создает цикл for. Вот один из способов -

library(shiny)
library(shinydashboard)

ui <- fluidPage(      
  titlePanel("Dynamic Boxes"),      
  fluidRow(
    uiOutput("boxes")
  )
)

server <- function(input, output) {      
  output$boxes <- renderUI({
    lapply(1:10, function(a) {
      x = 1:100
      box(title = paste0("box ", a), renderPlot(plot(x = x, y = x^a)))
    })
  })
}

shinyApp(ui = ui, server = server)

enter image description here

...