1

rownamesデータテーブルをフィルタリングした後、1,2,3...からカウントを再開したいと思います。出来ますか?

簡単なコードは次のとおりです。

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... として開始したいと思います。

助けてくれてありがとう!

4

1 に答える 1

1

Datatablesドキュメントには、ここでこれを行う方法の例がありました。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変更されません。

于 2016-02-19T10:43:37.383 に答える