双头滑块输入未拾取 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)
我正在尝试设计一个反应式闪亮应用程序。我正在使用双头滑块输入来获取多个值,并在 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)