Nano Hash - криптовалюты, майнинг, программирование

Передать другой вывод в реактивный фрейм в зависимости от ввода

Я пытаюсь собрать свою первую flexdashboard. (См. здесь описание данных, которые я использую)

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

Код, который у меня есть до сих пор:

Inputs {.sidebar}
-----------------------------------------------------------------------
```{r}
selectInput("hosp",
        label = h4("Select hospital:"),
        choices = list("Hospital 1" = "hosp1",
                       "Hospital 2" = "hosp2"), selected = "hosp1")

sliderInput("dates",
        label = h4("Select dates:"),
        min = as.Date("2006-01-01"), max = as.Date("2015-12-01"),
        value = c(as.Date("2006-01-01"), as.Date("2015-12-01")),
        timeFormat = "%b-%Y")

````

Row
-----------------------------------------------------------------------
### Usage Graph
```{r}
renderPlot({
    p <- ggplot(data = summarise(group_by(filter(usage,
                      hospital == input$hosp, date > as.Date(input$dates[1])
                      & date < as.Date(input$dates[2])), date),
                      total = round(sum(usage))), aes(x = date, y = total)) 
    + geom_line()

 p
})
```

Это отлично работает — у меня есть раскрывающийся список для больницы, и я могу выбрать диапазон дат с помощью ползунка.

Я хотел бы добавить два разных раскрывающихся списка; один для выбора типа графика (общее использование, отдельный препарат, класс препаратов)

Как я пытался это сделать:

selectInput("gtype",
        label = h4("Select graph type:"),
        choices = list("Total Use" = "abxa",
                       "By Class" = "abxc",
                       "By Agent" = "abxd"), selected = "abxa")

conditionalPanel("input.gtype == 'abxd'",
             selectInput("abagent",
                         label = h4("Select Agent:"),
                         choices = list("Amoxycillin" = "amoxycillin",
                                        "Co-amoxyclav" = "amoxicillin-clavulanate",
                                        "Cephazolin" = "cefazolin",
                                        "Gentamicin" = "gentamicin"), selected = "cefazolin"

Это хорошо работает на боковой панели — при выборе «По агенту» открывается следующий список с выбором наркотиков, и я могу выбрать один.

Но как изменить вывод на панели графика?

Мне нужно немного изменить вызов ggplot для каждого варианта использования; есть ли способ отрисовки другого графика в зависимости от результатов раскрывающегося списка?

Я пробовал использовать:

conditionalPanel("input.type" == "abxa",
    renderPlot({ plot 1 call })
)
conditionalPanel("input.type" == "abxd",
    renderPlot({ plot 2 call })
)

но это приводит к тому, что ни один график не появляется независимо от настроек боковой панели (я подтвердил, что два вызова renderPlot работают, если вы используете их по отдельности)

Заранее спасибо.


Ответы:


1

Вместо создания условной панели для каждого графика просто выполните проверки внутри функции renderplot:

renderPlot({ 
  if(input$gtype=='abxa'){
    plot 1 call 
  }else if(input$gtype=='abxd'){
    plot 2 call
  }
})
11.05.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..