Как передать значение из выходного объекта в качестве ввода в другой выходной объект? - PullRequest
0 голосов
/ 18 февраля 2020

Я работаю над приложением на основе моделирования. У меня есть 2 начальных объекта ввода чисел c, "максимальное число импов" и "численность населения". Основываясь на том, что вводится в эти числовые c входные объекты, приложение генерирует еще 2 входных объекта (в действительности как выходные объекты) - «select_proportion» и «select_probability». Если «максимальное число импов» равно 3, приложение должно сгенерировать 8 новых входных объектов - 4, которые запрашивают пропорцию (пропорция0, пропорция1, пропорция2, пропорция3), и 4 из которых запрашивают вероятность0, вероятность1, вероятность2 и вероятность3. Я хочу передать эти значения пропорций и вероятностей в функции выборки, которые работают следующим образом:

1) выборка (c (0, вход $ max_imp, 1), размер = вход $ население, замена = TRUE, prob = они принимают значения пропорций

выборка для двоичных значений для всех пропорций:
2) выборка (c (0,1), длина (пропорция_i) , replace = TRUE, prob = они принимают значения вероятности )

В идеале, я хотел бы иметь все это в кадре данных, где у меня есть столбцы, для которых в скобках пропорции принадлежит запись и есть ли у них 0 или 1.

Код:

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Simulation"),
  dashboardSidebar(
    sidebarMenu(
      numericInput("max_imp", "max imp count", 0, min = 0, max = 15, step = 1),
      numericInput("population", "population size", 1, min = 0, max = 100000, step = 1),
      menuItemOutput("menuitem")
    )
  ),
  dashboardBody(
    uiOutput("select_proportion"),
    uiOutput("select_probability")
  ))


server <- function(input, output) {

    output$select_proportion = renderUI(
      lapply(0:(input$max_imp), function(i){
      numericInput(inputId = "i1", label = paste0("proportion",i), 0, min = 0, max = 1, step = 0.05)}))

    output$select_probability = renderUI(
    lapply(0:(input$max_imp), function(i){
      numericInput(inputId = "i2", label = paste0("probability",i), 0, min = 0, max = 1, step = 0.05)}))

}

# Run the application
shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 18 февраля 2020

Ваши выходные элементы - это только контейнер пользовательского интерфейса, которые затем заполняются входными элементами, определенными в функциях renderUI. Вы можете легко получить доступ к значениям этих элементов ввода, как вы делаете это с другими вашими входами.

Единственное здесь, что вы должны установить идентификаторы входов динамически c, например, вместо id = "i2" для второго входа используйте id = paste("input", i, "2", sep = "-"). Это создаст вам input$max_imp + 1 различных входов. Затем к значениям можно получить доступ через input$input_1_2.

BR Себастьян

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...