我正在R Shiny中构建一个具有百分比滑块的仪表板。我正在尝试使其成为反应性函数,以便在用户移动滑块时调整数据表。但是我一直在尝试使它动态化,尽管代码没有出错,但仍然无法正常工作。下面的代码段:
ui <- dashboardPage(
dashboardBody(fluidRow(column(width=3, sliderInput("slider", "Threshold:", 0, 100, post = " %", 50))))
)
server <- shinyServer(function(input, output, session){
reactive({
Value = as.character(c(input$slider))
})
output$Data_Table <-
renderTable({
Tbl_Data[which(Tbl_Data[,5]>input$Value),]
})
})
shinyApp(ui, server)
任何帮助将不胜感激。
谢谢
此处回溯;
input$Value
未定义。 input
“列表”包含所有输入控件;例如, Value
不是其中之一。
在您的代码中,Value
是反应式的。因此要使用它,请调用Value()
。
第二,input$slider
本身是一个数值。我不记得它是在0-100还是0.0-1.00的范围内,而您决定将其转换为字符串(as.character(c(input$slider))
)(以及为什么要调用额外的c
?)。
所以您正在做的比较是在...一个字符串上。这可能会或可能不会产生意外的结果。取决于Tbl_Data
第五列的类型-是字符还是数字矢量?
如果Tbl_Data[,5]
是数字,则您的比较可以简化为
Tbl_Data[Tbl_Data[,5]>input$slider, ]
因为which
返回参数解析为TRUE
的整数位置-并且进行子集设置时,您直接使用TRUE
和FALSE
的逻辑向量。