我希望在过滤数据表后再次从1,2,3 ...开始rownames
计数。有可能吗?
这是一个简单的代码:
library(shiny)
library(DT)
library(ggplot2)
x <- as.numeric(1:1000)
y <- as.numeric(1:1000)
data <- data.frame(x,y)
shinyApp(
ui = fluidPage(dataTableOutput('tbl'),
plotOutput('plot1')),
server = function(input, output) {
output$tbl = renderDataTable({
datatable(data, filter = "top", rownames=TRUE,options = list(
pageLength = 300, lengthMenu = c(100,200,300,400,500,600)
))
})
output$plot1 = renderPlot({
filtered_data <- input$tbl_rows_all
ggplot(data = data[filtered_data, ], aes(x = x,y = y)) + geom_line()
})
}
)
所以作为一个例子,如果我过滤列x以获得50 -...的值,我希望rownames
不要(在这种情况下)开始为50,51 ..,但是作为1 ,2 ...
感谢您的帮助!
答案 0 :(得分:1)
Datatables
个文档举例说明了如何here。您可以使用javascript代码和datatable
回调参数:
output$tbl = renderDataTable({
datatable(data, filter = "top", rownames=TRUE,options = list(
pageLength = 300, lengthMenu = c(100,200,300,400,500,600)
),
callback=JS("table.on( 'order.dt search.dt', function () {
table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
cell.innerHTML = i+1;});}).draw();"))
})
这只会更改显示的HTML值,不会更改数据集的实际rownames
。