双头滑块输入未拾取 R 范围内的所有值

Double Head Slider Input is not picking up all the values in a Range in R

我正在尝试设计一个反应式闪亮应用程序。我正在使用双头滑块输入来获取多个值,并在 Shiny App 的数据 table 中显示它对应的其他列值。例如,我面临的问题是让范围为 1 到 3,其中我的数据具有 1、2 和 3 的值。当我将一个输入点放在 1 中并将另一个输入点放在 3 中时,一般期望是,它也应该获取 2 的值,因为它存在于 1 到 3 的范围内。但是 2 的值没有显示。请找到我用来创建滑块输入的代码。

sliderInput(
                  "key",
                  "Key Value",
                  min = 1,
                  max = 3,
                  value = c(1,3),
                  step=1
                )

在 Shiny App 中,滑块输入值是这样选择的。

我得到的输出是

但我也应该得到 2 的值。

有人可以帮我解决这个问题吗? 提前致谢。

我希望错误不在您的滑块中,而是在您的过滤方式中。请注意,滑块 return 表示所选的最小值和最大值,而不是其范围内的所有值。所以在这里,input$key 将 return 一个包含数字 1 和 3 而不是 2 的数组。如果您随后应用过滤器 df$Key %in% input$key,则只会选择 1 和 3。如果你想要范围内的所有数字,你应该过滤中间的数字,例如

df$Key >= input$key[1] & df$Key <= input$key[2]

df$Key %inrange% input$key,

使用 data.table 包中的 %inrange%

下面给出了一个工作示例,希望对您有所帮助!

library(shiny)
library(DT)
library(data.table)

df <- data.frame(Key=c(1,1,2,2,3,3))

ui <- fluidPage(
  sliderInput("key","Key Value",min = 1,max = 3,value = c(1,3),step=1),
  dataTableOutput('my_dt')
)

server <- function(input, output, session) {
  output$my_dt <- renderDataTable({
    # produces wrong result; only 1 and 3.
    # df <- df[df$numbers %in% input$key,,drop=FALSE]
    # produces correct result; 1,2 and 3.
    # df <- df[df$Key %inrange% input$key,,drop=FALSE]
    # Also produces correct result; 1,2 and 3. No data.table needed.
    df <- df[df$Key >= input$key[1] & df$Key <= input$key[2],,drop=FALSE]
  })
}

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