jpe*_*gao 8 datatable r filter datatables shiny
我是新手,shiny但想知道是否有任何方法可以在对象中存储过滤的数据表(使用列过滤器),R以便可以将此过滤后的数据传递给直方图和绘图函数.
编辑5月7日,15日:包括作者对评论的扩展解释
我希望使用内置列过滤器对表进行过滤,然后希望绘图自动调整.我已经尝试过DT软件包,但是我不喜欢这个软件包附带的很多列过滤器,因为我不想(我认为)从表中的一个子列中删除过滤器
该例如通过@NicE建议是非常有帮助的。我在下面包含了一个最小的例子:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(dataTableOutput('tbl'),
plotOutput('plot1')),
server = function(input, output) {
output$tbl = renderDataTable({
datatable(iris, options = list(lengthChange = FALSE))
})
output$plot1 = renderPlot({
filtered_data <- input$tbl_rows_all
hist(iris[filtered_data, "Sepal.Length"])
})
}
)
Run Code Online (Sandbox Code Playgroud)
这将生成的直方图Sepal.Length从所述iris数据在所述过滤的数据集DT::datatable。
注意:这假设有以下版本的DT和shiny:
DT_0.0.39 shiny_0.11.1.9005
只需构建@JasonAizkalns的示例,您就可以使用jQuery隐藏一些内置的列过滤器.例如,前两个是隐藏的:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(dataTableOutput('tbl'),
plotOutput('plot1')),
server = function(input, output) {
output$tbl = renderDataTable({
datatable(iris, filter="top",options = list(lengthChange = FALSE),callback=JS("
//hide column filters for the first two columns
$.each([0, 1], function(i, v) {
$('input.form-control').eq(v).hide()
});"))
})
output$plot1 = renderPlot({
filtered_data <- input$tbl_rows_all
hist(iris[filtered_data, "Sepal.Length"])
})
}
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4986 次 |
| 最近记录: |