gpt4 book ai didi

r - 在 rmarkdown 中包装宽表

转载 作者:行者123 更新时间:2023-12-03 23:52:41 26 4
gpt4 key购买 nike

我有一个非常宽的表格(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)

但这显然很乏味......我知道有缩小选项,但由于我有这么多列,这是不可能的。

有没有我可以在 kable 中扭曲的参数来实现它?

更新:
@jay.sf 的答案似乎运作良好,但在这里没有产生相同的结果。相反,我得到了一些简单的代码 - 你能不能再看看,让我知道我在哪里可以改进?谢谢!

results

我的 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 列(您使用的数字可以是 ncol(data) 的不同因子)。我低估了做这件事的工作,但从 an old SO post 得到了想法沿着列数表示数字 1 到 20,对其进行排序,然后将其用作分组,然后拆分列。

然后这些向量中的每一个都成为 select 中的列索引.每个数据帧的结果列表都传递给 knitr::kablekableExtra::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)
```

PDF输出的顶部:

pdf

关于r - 在 rmarkdown 中包装宽表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55208340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com