提取列表中的数据框并以 pdf 格式打印

Extract data frames within a list and print in pdf

我有一个 n 数据框的列表。让我们调用列表 Y。 它看起来像这样:

$Profession1
Searchterm         Product            Quantity
internist          Der Internist      3
pneumo news        Pneumo News        1
der urologe        Der Urologe        5    


$Profession2
Searchterm         Product            Quantity
der nervenarzt     Der Internist      7
der kardiologe     Der Kardiologe     2
.piefel            Strahlentherapie   6
therapiedes zenker Pathophysiologie   1

.
.
.
.
.
.

$Profession(n)
Searchterm         Product            Quantity
tuberkolose        Tuberkolose        2
und notfallmedizin Notfall            3
rechtsmedizin      Rechtsmedizin      9

现在,我想在 pdf 文件的新页面上打印每个数据框。每个数据框中的记录数或行数不同。我想我应该先遍历每个数据框,然后遍历列表中数据框的每一行,但我不知道该怎么做。

谢谢。

首先,在 R 中,您不需要遍历给定 table 中的行。打印一个 table 应该打印它的全部内容 - 一些 data-frame 像结构 (tibble, data.table) 将只打印出前几行,除非你修改一些参数来打印,但你当然应该不需要遍历行。

以下是我在 Rmarkdown 中的操作方法。

确保您在 markdown header:

中选择了 data-frame 打印选项
---
title: "My Title"
author: "Me"
date: "`r format(Sys.time(), '%Y-%m-%d')`"
output:
    pdf_document:
        df_print: kable
---

导入这些以备后用

```{r}
library(purrr)
library(knitr)
```

设置您的数据

```{r}
# set up my_tables
```

为列表中的每个 data-frame 打印 data-frame 的文本表示

```{r}
out <- purrr::map_chr(
    my_tables,
    function(tt){
        knit_expand(text = "{{tt}}")
        }
    )
```

打印出 data-frames

的 collection
`r paste(knit(out), collapse = "\n")`

如果你想在 R 内部工作,你可以多次调用 grid::grid.table 将你的 table 打印成 pdf:

library(grid)
pdf("my_file.pdf")
for(tt in my_tables){
  grid.table(tt)
  }
dev.off()

这是一个 non-RMarkdown 解决方案:

首先,我使用 R`

中的 iris 数据集制作了一个可重现的示例表列表
tables <- list(a =  iris[1:10,], b = iris[11:20,], c = iris[21:30,])

使用 gridgridExtra 包,您可以将表格创建为图形设备。 lapply 用于列表中每个表的 运行 grid.table(),所有这些都包含在函数 pdf 中,它将输出保存为 PDF:

library(gridExtra)
library(grid)

pdf(file = "name_of_file.pdf")
lapply(tables, function(x){
  grid.newpage()
  grid.table(x)})
dev.off()

这会生成一个多页 PDF 文件:

Further reading: learn how you can style grid graphics here: https://cran.r-project.org/web/packages/gridExtra/vignettes/tableGrob.html . You can change the colour of the tables, formatting etc.