rmdformat:更改默认 table 滚动框

rmdformat: change default table scroll box

上下文

rmdformats 软件包为 Rmds 提供了一些很酷的默认主题。 我正在使用 downcute 主题。

可重现的例子

但是,当我在 html 文档中绘制 table 时,主题会自动设置一些默认值,我不知道如何编辑。

---
title: "Test"
output: rmdformats::downcute
---  

```{r, echo=FALSE, warning=FALSE, message=FALSE}
library(dplyr)
library(kableExtra)

mtcars %>% 
  bind_cols(mtcars) %>% 
  kbl() %>% 
  scroll_box(width = "100%", height = "400px")
```

它是这样的(滚动到底部以查看第二个水平滚动条):

问题

此输出有两个问题:

预期结果

我想获得以下输出。为了创建预期的结果,我切换到 html_document 主题,但我想使用 rmdformats 主题!

---
title: "Test"
output: html_document
---

```{r, echo=FALSE, warning=FALSE, message=FALSE}
library(dplyr)
library(kableExtra)

mtcars %>% 
  bind_cols(mtcars) %>% 
  kbl() %>% 
  kable_styling() %>% 
  scroll_box(width = "100%", height = "400px")
```

有什么帮助吗?也许 CSS 解决方案?

额外信息

> sessionInfo()
R version 4.1.3 (2022-03-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19044)

Matrix products: default

locale:
[1] LC_COLLATE=Italian_Italy.1252  LC_CTYPE=Italian_Italy.1252    LC_MONETARY=Italian_Italy.1252 LC_NUMERIC=C                  
[5] LC_TIME=Italian_Italy.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] kableExtra_1.3.4 dplyr_1.0.9     

loaded via a namespace (and not attached):
 [1] bslib_0.3.1       jquerylib_0.1.4   highr_0.9         pillar_1.7.0      compiler_4.1.3    rmdformats_1.0.4  tools_4.1.3      
 [8] digest_0.6.29     jsonlite_1.8.0    viridisLite_0.4.0 evaluate_0.15     lifecycle_1.0.1   tibble_3.1.6      pkgconfig_2.0.3  
[15] rlang_1.0.2       DBI_1.1.2         cli_3.3.0         rstudioapi_0.13   yaml_2.3.5        xfun_0.30         fastmap_1.1.0    
[22] httr_1.4.3        stringr_1.4.0     knitr_1.39        xml2_1.3.3        sass_0.4.1        systemfonts_1.0.4 generics_0.1.2   
[29] vctrs_0.4.1       webshot_0.5.3     tidyselect_1.1.2  svglite_2.1.0     glue_1.6.2        R6_2.5.1          fansi_1.0.3      
[36] rmarkdown_2.14    bookdown_0.26     purrr_0.3.4       magrittr_2.0.3    scales_1.2.0      ellipsis_0.3.2    htmltools_0.5.2  
[43] assertthat_0.2.1  rvest_1.0.2       colorspace_2.0-3  utf8_1.2.2        stringi_1.7.6     munsell_0.5.0     crayon_1.5.1 

rmdformats 版本 1.0.4

当我运行你的代码:

---
title: "Test"
output: rmdformats::downcute
---  

```{r, echo=FALSE, warning=FALSE, message=FALSE}
library(dplyr)
library(kableExtra)

mtcars %>% 
  bind_cols(mtcars) %>% 
  kbl() %>% 
  scroll_box(width = "100%", height = "400px")
```

这是输出:

只有一个水平和垂直滚动条。

会话信息

R version 4.1.0 (2021-05-18)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS 12.4

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib

locale:
[1] nl_NL.UTF-8/nl_NL.UTF-8/nl_NL.UTF-8/C/nl_NL.UTF-8/nl_NL.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] kableExtra_1.3.4 dplyr_1.0.9      rmdformats_1.0.4

loaded via a namespace (and not attached):
 [1] pillar_1.7.0      compiler_4.1.0    tools_4.1.0       digest_0.6.29     viridisLite_0.4.0
 [6] evaluate_0.15     lifecycle_1.0.1   tibble_3.1.7      pkgconfig_2.0.3   rlang_1.0.2      
[11] cli_3.3.0         DBI_1.1.2         rstudioapi_0.13   yaml_2.3.5        xfun_0.31        
[16] fastmap_1.1.0     httr_1.4.3        stringr_1.4.0     knitr_1.39        xml2_1.3.3       
[21] systemfonts_1.0.4 generics_0.1.2    vctrs_0.4.1       webshot_0.5.2     tidyselect_1.1.2 
[26] svglite_2.1.0     glue_1.6.2        R6_2.5.1          fansi_1.0.3       rmarkdown_2.14   
[31] bookdown_0.25     purrr_0.3.4       magrittr_2.0.3    scales_1.2.0      ellipsis_0.3.2   
[36] htmltools_0.5.2   rsconnect_0.8.25  assertthat_0.2.1  rvest_1.0.2       colorspace_2.0-3 
[41] utf8_1.2.2        stringi_1.7.6     munsell_0.5.0     crayon_1.5.1  

rmdformats 版本 1.0.3

会话信息

R version 4.1.0 (2021-05-18)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS 12.4

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib

locale:
[1] nl_NL.UTF-8/nl_NL.UTF-8/nl_NL.UTF-8/C/nl_NL.UTF-8/nl_NL.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] kableExtra_1.3.4 dplyr_1.0.9      rmdformats_1.0.3 devtools_2.4.3   usethis_2.1.5   

loaded via a namespace (and not attached):
 [1] tidyselect_1.1.2  xfun_0.31         remotes_2.4.2     purrr_0.3.4       colorspace_2.0-3 
 [6] vctrs_0.4.1       generics_0.1.2    testthat_3.1.2    viridisLite_0.4.0 htmltools_0.5.2  
[11] utf8_1.2.2        rlang_1.0.2       pkgbuild_1.3.1    pillar_1.7.0      glue_1.6.2       
[16] withr_2.5.0       DBI_1.1.2         sessioninfo_1.2.2 lifecycle_1.0.1   stringr_1.4.0    
[21] munsell_0.5.0     rvest_1.0.2       evaluate_0.15     memoise_2.0.1     knitr_1.39       
[26] callr_3.7.0       fastmap_1.1.0     ps_1.7.0          fansi_1.0.3       scales_1.2.0     
[31] cachem_1.0.6      desc_1.4.1        pkgload_1.2.4     webshot_0.5.2     fs_1.5.2         
[36] systemfonts_1.0.4 brio_1.1.3        digest_0.6.29     stringi_1.7.6     bookdown_0.26    
[41] processx_3.5.3    rprojroot_2.0.2   cli_3.3.0         tools_4.1.0       magrittr_2.0.3   
[46] tibble_3.1.7      crayon_1.5.1      pkgconfig_2.0.3   ellipsis_0.3.2    xml2_1.3.3       
[51] prettyunits_1.1.1 assertthat_0.2.1  rmarkdown_2.14    svglite_2.1.0     httr_1.4.3       
[56] rstudioapi_0.13   R6_2.5.1          compiler_4.1.0   

您必须控制 table 和 table 包装器元素。如果这不是您要找的,请告诉我。

---
title: "Test"
output: rmdformats::downcute
---  

<style>
table, .table-wrapper {
  height: 400px;
  width: 100%;
  overflow: auto;
}
</style>

```{r, echo=FALSE, warning=FALSE, message=FALSE}
library(dplyr)
library(kableExtra)

mtcars %>% 
  bind_cols(mtcars) %>% 
  kbl() #%>% 
 # scroll_box(width = "100%", height = "400px")
```

我不知道您打算如何使用另一个 space,但此模板的边距令人讨厌。如果你想最大限度地利用space,那么将<style>标签之间的内容更新为如下内容:

<style>
table, .table-wrapper {
  height: 400px;
  width: 100%;
  overflow: auto;
}
.layout-narrow .Wrap {
  margin: unset;
  max-width: unset;
}
</style>

请注意,现在没有水平滚动条,因为显示了 table 的整个宽度。


更新:添加粘性 header 行


要使顶行固定,请将 <styles> 标记中的内容更改为以下内容。 (您仍然可以向其中添加 .layout-narrow .Wrap 样式。)

请注意,这不是 table, .table-wrappertable 不再在这些标签中。

<style> 
.table-wrapper {
  overflow: auto;
  height: 400px;
  width: 100%;
}
thead, th {
  top: 0;
  position: sticky;
  z-index: 2;
}
</style>