Rac*_*ang 5 latex r r-markdown kable
我有一个非常宽的表格(300 多列),并且想通过换行来显示它。在示例中,我将仅使用 100 列。
我的想法是重复使用 kable 来显示表的子集:
library(kableExtra)
set.seed(1)
data = data.frame(matrix(rnorm(300, 10, 1), ncol = 100))
kable(data[, 1:5], 'latex', booktabs = T)
kable(data[, 6:10], 'latex', booktabs = T)
kable(data[, 11:15], 'latex', booktabs = T)
Run Code Online (Sandbox Code Playgroud)
但这显然很乏味......我知道有缩小比例的选项,但由于我有这么多列,这是不可能的。
我可以在 kable 中添加任何参数来实现它吗?
更新:@jay.sf 的答案似乎运行良好,但这里没有产生相同的结果。相反,我得到了一些简单的代码 - 您能否再看一下并让我知道我可以在哪里改进?谢谢!
我的是sessionInfo():R version 3.5.1 (2018-07-02)与rmarkdown::pandoc_version().1.19.2.1
这个问题实际上比我乍一看要棘手。我使用了一些tidyverse函数,专门用于dplyr::select获取列并purrr::map沿着列索引组移动。
我的想法是制作一个列索引向量列表来选择,这样第一个列表项是1:20,第二个是21:40,依此类推,以便将数据分成 20 个表,每个表 5 列(您的数字) use 可以是 ) 的不同因素ncol(data)。我低估了这样做的工作量,但从一篇旧的 SO 帖子中得到了一些想法,将数字 1 到 20 沿着列数表示,对其进行排序,然后使用它作为分组,然后拆分列。
然后这些向量中的每一个都成为 中的列索引select。生成的数据帧列表分别传递到knitr::kable和kableExtra::kable_styling。如果把这些东西留在那里,也会得到map打印名称的默认值,这并不理想,所以我添加了一个调用来purrr::walk整齐地打印它们。
另请注意,以kable这种方式制作 'd 表意味着放入results="asis"块选项。
---
title: "knitr chunked"
output: pdf_document
---
```{r include=FALSE}
library(knitr)
library(kableExtra)
library(dplyr)
library(purrr)
set.seed(1)
data = data.frame(matrix(rnorm(300, 10, 1), ncol = 100))
```
```{r results='asis'}
split(1:ncol(data), sort(rep_len(1:20, ncol(data)))) %>%
map(~select(data, .)) %>%
map(kable, booktabs = T) %>%
map(kable_styling) %>%
walk(print)
```
Run Code Online (Sandbox Code Playgroud)
PDF 输出顶部: