Я реализую приложение R Shiny, и мои навыки работы с Javascript невысоки.
Я изо всех сил пытаюсь придумать условную логику в conditionalPanel(). Как сделать так, чтобы id3 отображался только в том случае, если для id1 установлено значение ИСТИНА, а диапазон ползунка id2 имеет разные варианты выбора?
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
materialSwitch(inputId = "id1", label = "Do I want this on?", value = FALSE, status = "primary"),
sliderTextInput(inputId = "id2", label = "Show below if the range is greater than 0", choices = 2000:2018, selected = rep(2018, 2)),
br(), br(),
conditionalPanel("input.id1 && input.id2[1] != input.id2[2]",
materialSwitch(inputId = "id3", label = "To show based on conditions above.", value = FALSE, status = "primary")
)
)
server <- function(input, output) {}
shinyApp(ui = ui, server = server)
Я также играл с пакетом shinyjs, но у меня тоже не было успеха (попытка ниже):
library(shiny)
library(shinyWidgets)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
materialSwitch(inputId = "id1", label = "Do I want this on?", value = FALSE, status = "primary"),
sliderTextInput(inputId = "id2", label = "Show below if the range is greater than 0", choices = 2000:2018, selected = rep(2018, 2)),
br(), br(),
hidden(
p(id = "element", materialSwitch(inputId = "id3", label = "To show based on conditions above.", value = FALSE, status = "primary"))
)
)
server <- function(input, output) {
observe({
if (input$id1 == TRUE && (input$id2[1] != input$id2[2])) {
show("element")
}
})
}
shinyApp(ui = ui, server = server)
Не намеренно, просто пытаюсь найти решение.
чтобы проверить условие И, вы должны использовать &&
Конечно. В любом случае проблему не решить.
input.id1 && input.id2.value! = input.id1.value?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я забыл, что Javascript использует индекс с нулевой базой, в отличие от R.
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
materialSwitch(inputId = "id1", label = "Do I want this on?", value = FALSE, status = "primary"),
sliderTextInput(inputId = "id2", label = "Show below if the range is greater than 0", choices = 2000:2018, selected = rep(2018, 2)),
br(), br(),
conditionalPanel("input.id1 && input.id2[0] != input.id2[1]",
materialSwitch(inputId = "id3", label = "To show based on conditions above.", value = FALSE, status = "primary")
)
)
server <- function(input, output) {}
shinyApp(ui = ui, server = server)
это 'input.id1 & input.id2 [1]! = input.ids [2]' намеренно или вы хотите использовать здесь &&?