Одинаковые входные данные на разных вкладках Панели в navbarPage, Shiny R - PullRequest
0 голосов
/ 06 сентября 2018

У меня блестящее приложение с пользовательским интерфейсом, которое состоит из навигационной страницы с различными панелями вкладок. Внутри этих я хотел бы иметь одинаковые кнопки для каждой вкладки. Таким образом, каждая вкладка имеет одну и ту же кнопку, которая ссылается на одни и те же входы.

, например

ui <- navbarPage( theme = shinytheme("sandstone"),
              tabPanel(title="number one",
                       fluidRow(column(2, wellPanel(

                         sliderInput("one", "slider_one", value =0, min = 0, max=500, step=10),
                         sliderInput("two", "slider_two", value =250, min = 0, max=1000, step=10),
                       )),
                       column(8,
                              dataTableOutput('totals')
                              ))),

                tabPanel(title="number two" ,
                         fluidRow(column(2, wellPanel(
                           sliderInput("one", "slider_one", value =0, min = 0, max=500, step=10),
                           sliderInput("two", "slider_two", value =250, min = 0, max=1000, step=10)
                           )),
                           column(8,
                                         dataTableOutput('totals_2')),
                       )))

В серверной части кода у меня есть некоторые реактивные значения, которые зависят от вставленных входов и некоторых выходов (с разными именами), которые зависят от реактивных значений.

Можно ли написать код для реактивных значений только один раз, например, только для входов на первой tabPanel (поскольку они одинаковы для обеих панелей), или я должен определить реактивные значения для каждой tabPanel отдельно (в этом случае мне также следует переименовать входы, чтобы они имели разные имена на каждая вкладка)?

1010 * например *

server <- function(input, output) {

react <- reactive({some_function(input$one, input$two)})

output$totals<-renderDataTable({react()
  })

output$totals_2<-renderDataTable({react()
  })

}

Поэтому вместо этого следует написать следующее.

ui <- navbarPage( theme = shinytheme("sandstone"),
              tabPanel(title="number one",
                       fluidRow(column(2, wellPanel(

                         sliderInput("one", "slider_one", value =0, min = 0, max=500, step=10),
                         sliderInput("two", "slider_two", value =250, min = 0, max=1000, step=10),
                       )),
                       column(8,
                              dataTableOutput('totals')
                              ))),

                tabPanel(title="number two" ,
                         fluidRow(column(2, wellPanel(
                           sliderInput("one1", "slider_one", value =0, min = 0, max=500, step=10),
                           sliderInput("two2", "slider_two", value =250, min = 0, max=1000, step=10)
                           )),
                           column(8,
                                         dataTableOutput('totals_2')),
                       )))
    server <- function(input, output) {

react <- reactive({some_function(input$one, input$two)})

react2 <- reactive({some_function(input$one1, input$two2)})

output$totals<-renderDataTable({react()
  })

output$totals_2<-renderDataTable({react2()
  })

}

Имо, я думаю, что много написано, особенно если у вас много параметров.

...