R Shiny checkboxGroupInput - Действия, основанные на разных комбинациях? - PullRequest
0 голосов
/ 09 сентября 2018

Я работаю с R блестящим, чтобы создать простое приложение для черчения, и я не думаю, что я действительно понимаю, как работает checkboxGroupInput, и документация с веб-сайта приложения R блестящая не слишком полезна, поэтому я былв надежде получить некоторое разъяснение.

Вот как выглядит мой checkboxGroupInput:

checkboxGroupInput("trend1DisplayOptions", "Graph Display Options",
                                    choiceNames = list("Connect Data Points", "Display Loess Smoother with Uncertainty Bounds"),
                                    choiceValues = list("connect", "loess"),
                                    selected = "connect")

Итак, я, по сути, хочу отобразить 4 разных "типа" графиков, в зависимости от того, какойфлажки установлены (отображать точки лесс / соединения или нет).

А в моем коде server приведены операторы if/else:

if (input$trend1DisplayOptions == "connect" && input$trend1DisplayOptions != "loess") {
  # Only connect points
  p <- plot_ly(x = df2$labels, y = df2$values, type = 'scatter', mode='lines+markers') %>%
    layout(xaxis = list(type = "category")) 
  p

# Probably wrong way to check
} else if (input$trend1DisplayOptions == "connect" && input$trend1DisplayOptions == "loess") {
  # Should display nothing

# Probably wrong way to check
} else if (input$trend1DisplayOptions != "connect" && input$trend1DisplayOptions == "loess") {
  # Should display nothing

} else if (is.null(input$trend1DisplayOptions)) {
  # Should show
  p <- plot_ly(x = x_labels, y = df$values, type = 'scatter') %>%
    layout(xaxis = list(type = "category"), title = input$trendTitle) 
  p

}

Проблема I 'Я сталкиваюсь с тем, что когда установлены оба флажка, приложение shiny не должно отображать ничего, но оно все равно отображает график из первого оператора if (т. е. когда выбран только «connect»).И, когда ни один из них не выбран, я получаю ошибку missing value where TRUE/FALSE needed.

Что я неправильно понял относительно checkboxGroupInput?

Я вижу, что проблема заключается в предположении, что входные значения равны 2вещи в то же время.Итак, как правильно проверить, установлен ли флажок 1, а флажок 2 нет, и наоборот?Кроме того, я искал на этом форуме, чтобы увидеть, как бороться, когда ни один из них не выбран, и кажется, is.null() правильный путь.Почему это не работает для моего случая?

1 Ответ

0 голосов
/ 09 сентября 2018

Похоже, я неправильно прочитал одну из S.O. ответы. Я должен использовать %in% и !(... %in% ...) для проверки комбинаций.

Вот правильная версия, если кому-то это нужно:

if ("connect" %in% input$trend1DisplayOptions && !("loess" %in% input$trend1DisplayOptions)) {
  p <- plot_ly(x = df2$labels, y = df2$values, type = 'scatter', mode='lines+markers') %>%
    layout(xaxis = list(type = "category")) 
  p


} else if (!("connect" %in% input$trend1DisplayOptions) && "loess" %in% input$trend1DisplayOptions) {
  # Should display nothing


} else if ("connect" %in% input$trend1DisplayOptions && "loess" %in% input$trend1DisplayOptions) {
  # Should display nothing


} else if (is.null(input$trend1DisplayOptions)) {
  p <- plot_ly(x = df2$labels, y = df2$values, type = 'scatter') %>%
    layout(xaxis = list(type = "category"), title = input$trendTitle) 
  p

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