datatable{DT}を利用して出力した表の列を固定する方法

datatable {DT} を利用して出力した表の列を固定する方法です。

始めにサンプルとする表を作成します。

library(dplyr)
library(DT)
sampledf <- matrix(data = rnorm(3 * 15) %>% round(3), nrow = 3, ncol = 15) %>%
  data.frame() %>%
  tibble::add_column(S1 = LETTERS %>% head(3), .before = 1) %>%
  tibble::add_column(S2 = letters %>% head(3), .after = 1)
glimpse(sampledf)
Rows: 3
Columns: 17
$ S1  <chr> "A", "B", "C"
$ S2  <chr> "a", "b", "c"
$ X1  <dbl> -0.145, 1.322, -1.116
$ X2  <dbl> 0.542, 0.258, -1.730
$ X3  <dbl> -2.277, 0.047, 2.978
$ X4  <dbl> -0.863, -1.156, 0.862
$ X5  <dbl> 0.036, -0.110, 0.676
$ X6  <dbl> 1.146, -0.677, -2.002
$ X7  <dbl> -1.976, 1.411, -0.201
$ X8  <dbl> 0.193, 0.248, -1.264
$ X9  <dbl> 0.435, 0.009, -0.067
$ X10 <dbl> 0.823, 1.224, 0.481
$ X11 <dbl> -0.944, -0.885, -0.386
$ X12 <dbl> 1.540, -0.336, 0.257
$ X13 <dbl> 0.426, 0.760, 0.986
$ X14 <dbl> 0.004, 1.198, 1.200
$ X15 <dbl> -0.636, -0.016, 0.244

列を固定するには extensions“FixedColumns” を、optionsscrollX = TRUEfixedColumns = list(leftColumns(または rightColumns ) = 左(または右)端からの固定する列数) を指定します。

始めに左から3列目までを固定します。

leftColumns の場合は rownames も含んだ列数を指定します。

sampledf %>% datatable(
  rownames = TRUE,
  options = list(
    dom = "t",
    ordering = F,
    scrollX = TRUE,
    fixedColumns = list(leftColumns = 3)
  ),
  extensions = "FixedColumns"
)

続いて右から4列目までを固定します。

sampledf %>% datatable(
  rownames = TRUE,
  options = list(
    dom = "t",
    ordering = F,
    scrollX = TRUE,
    fixedColumns = list(rightColumns = 4)
  ),
  extensions = "FixedColumns"
)

以上です。