r - 双头滑块输入未获取 R 范围内的所有值
问题描述
我正在尝试设计一个反应式闪亮应用程序。我正在使用双头滑块输入来获取多个值并在 Shiny App 的数据表中显示它对应的其他列值。例如,我面临的问题是让范围为 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
)
在闪亮的应用程序中,滑块输入值是这样选择的。
我得到的输出是
但我也应该得到 2 的值。
有人可以帮我解决这个问题。提前致谢。
解决方案
我希望错误不在您的滑块中,而是在您的过滤方式中。请注意,滑块返回选定的最小值和最大值,而不是其范围内的所有值。所以在这里,input$key
将返回一个包含数字和 1 和 3 的数组,而不是 2。如果您随后应用 filter df$Key %in% input$key
,则只会选择 1 和 3。如果您想要范围内的所有数字,您应该过滤介于两者之间的数字,例如
df$Key >= input$key[1] & df$Key <= input$key[2]
或者
df$Key %inrange% input$key,
从包中%inrange%
。data.table
下面给出了一个工作示例,希望对您有所帮助!
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)
推荐阅读
- python - 在熊猫中取消嵌套列时保留空列表
- python - 如何构造授权标头以使用 python 将文件上传到 Azure blob 存储?
- php - WordPress 特色图片不会显示
- google-sheets - 有没有办法有条件地格式化数据验证条目以更改单元格本身的值?
- python - 我似乎无法在我的 main 中正确调用我的方法
- http - 如何阻止某些 HTTP 标头字段?
- solr - Solr.log 文件未使用最新信息进行更新
- sql - 使用 MERGE 语句时语法不正确
- python - FizzBuzz 还打印包含 3 和 5 的数字
- perl - 使用 DateTime 在 Perl 中显示 12 小时制时间