我对我在Shiny中使用的数据表(DT)有疑问。
我得到了相当大的数据(> 5000000行),我使用数据表(DT)和过滤器在闪亮的应用程序中显示它。根据用户对过滤的偏好,我们假设它给了我们550行(但它可以给我们更多或更少)。由于分页,我无法看到所有550行(假设pageLength为100)或者甚至更糟,我无法在绘图中进一步显示所有已过滤的行,因为函数input$tabelle_rows_all
使用当前行页面(我必须先更改条目号)。
有没有办法在过滤数据表之后获取所有找到的行(不依赖于pageLength
)?
示例:
library(shiny)
library(DT)
library(ggplot2)
x <- as.numeric(1:1000000)
y <- as.numeric(1:1000000)
data <- data.frame(x,y)
shinyApp(
ui = fluidPage(dataTableOutput('tableId'),
plotOutput('plot1')),
server = function(input, output) {
output$tableId = renderDataTable({
datatable(data, options = list(pageLength = 100, lengthMenu=c(100,200,300,400,500,600)))
})
output$plot1 = renderPlot({
filtered_data <- data[input$tableId_rows_all, ]
ggplot(data=filtered_data, aes(x=x,y=y)) + geom_line()
})
}
)
感谢任何信息
答案 0 :(得分:5)
你确定它还没有工作吗?从版本0.0.65开始,您应该具有以下内容:
输入$ tableId_rows_current:当前页面上的行索引
input $ tableId_rows_all:所有页面上的行索引(在表格被搜索字符串过滤后)
From the DT documentation
我在仪表板中使用tableId_rows_all就是这样,它正在运行。