web-dev-qa-db-ja.com

DT :: datatableで水平スクロールバーを表示する方法

R shiny DTパッケージを使用して、特定のテーブルを作成しています。列の数は、ユーザー入力ごとに異なるため、異なります。次のコードスニペットを含めて、水平スクロールバーを含めることで、列の数が多いときに、ユーザーが直接表示されない列をスクロールできるようにしました。

server.R:

output$results <- DT::renderDataTable({
    DT::datatable(data = datasetInput(),
                  options = list(scrollX = TRUE,...)
                  )
  })
<code reduced for brevity>

上記のコードを使用すると、水平スクロールバーは最初は表示されませんが、行をクリックしてキーボードの右矢印を押すと表示されます。列の数に関係なく、テーブルが起動されるとすぐにスクロールバーが表示される方法はありますか?マウスポインターを使用してスクロールバーをドラッグできますか?

更新

私は以下の答えのコードを試しましたが、これは私が見るものです-水平スクロールバーはありません。

enter image description here

23
Komal Rathi

スクロールバーを必要としない場合、簡単に強制することはできないと思います(またはすべきです)が、上記のコードはうまく機能し、ページの初期化時にスクロールバーを表示します。たぶん問題はデータか何かに関係しています。

以下は、ページの読み込み時に水平スクロールバーを持つ最小限の例です

runApp(shinyApp(
  ui = fluidPage(
    DT::dataTableOutput("results", width = 300)
  ),
  server = function(input, output, session) {
    output$results <- DT::renderDataTable(
      mtcars,
      options = list(scrollX = TRUE)
    )
  }
))
40
DeanAttali

これを試して:

DT::datatable(sta, options = list(
  pageLength=50, scrollX='400px'), filter = 'top')
5
Aditya Kothari

私もこの方法でしたでしょう:

datasetInput1 <- reactive({
      infile <- input$file1
      if(is.null(infile))
        return(NULL) 
      else
        m <- read.csv(infile$datapath, header = input$header)
        return ( DT::datatable(m, extensions = 'Scroller', options = list(deferRender = F, dom = 't',
                                                                      columnDefs = list(list(className = 'dt-center',
                                                                                             targets = 5)),
                                                                     scrollY = 300, scroller = TRUE, scrollX = T,
                                                                     pageLength = 5))
               )
    })
0
I_m_LeMarque