Отображение альтернативных имен в фильтре Rshiny, в результате чего выбор по умолчанию отсутствует - PullRequest
0 голосов
/ 02 мая 2019

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

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

The data would have a structure like this, 
but the values of "col_1" and "col_2" will always differ.
No matter what those values are, I always want the first value of "col_1" 
to appear in the Ui "Filter 1" as "Segment 1" and the first 
value of "col_2" to appear as "Group A" in "Filter 2" and so on...


col_1 <- c("Seg 1", "Seg 2")
col_2 <- c("A", "B")

x<-data.frame(Seg, Group)

#My ui looks something like this
....
pickerInput("Segment", "Filter 1",
    choices = c("Segement 1" =(x$Seg[1])[1],
              "Segment 2" = (x$Seg[2])[2]),
               selected = 'Segment 1', multiple = TRUE),
                    cellWidths = c("10%", "89%")
               ),
pickerInput("product_line", "Filter 2", multiple = TRUE,
      choices = c("Product A" = levels(x$Group[1]),
                  "Product B" = levels(x$Goup[2])),
                   selected = "Product A"),
....

С моими фактическими данными мой фильтр выглядит следующим образом. Как я могу получить выбор по умолчанию для отображения? enter image description here

1 Ответ

0 голосов
/ 03 мая 2019

Полагаю, вы хотите что-то вроде следующего:

library(shiny)
library(shinyWidgets)

random_numbers <- as.integer(runif(5, 1, 26))

col_1 <- paste("Seg", random_numbers)
col_2 <- LETTERS[random_numbers]

seg_choices <- seq_along(col_1)
names(seg_choices) <- paste("Segment", seg_choices)

grp_choices <- seq_along(col_2)
names(grp_choices) <- paste("Product", LETTERS[grp_choices])

ui <- fluidPage(
    pickerInput("segment", "Filter 1",
                choices = seg_choices,
                selected = seg_choices[1], multiple = TRUE),
    pickerInput("product", "Filter 2",
                choices = grp_choices,
                selected = grp_choices[1], multiple = TRUE),
    textOutput("selections")
)

server <- function(input, output, session) {
    selectedSegments <- reactive({
        col_1[as.integer(input$segment)]
    })

    selectedProducts <- reactive({
        col_2[as.integer(input$product)]
    })

    output$selections <- renderPrint({cat("selectedSegments: ", paste(selectedSegments(), collapse = ", "), " selectedProducts: ", paste(selectedProducts(), collapse = ", "))})
}

shinyApp(ui = ui, server = server)

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

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