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

R 提取列表中的数据帧并以pdf格式打印,r,loops,pdf-generation,R,Loops,Pdf Generation,我有一个n数据帧列表。让我们调用列表Y。 它看起来像这样: $Profession1 Searchterm Product Quantity internist Der Internist 3 pneumo news Pneumo News 1 der urologe Der Urologe 5 $Profession2 Searchterm Pr

我有一个
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中,您不需要迭代给定表中的行。打印一个表应该打印它的全部内容——一些类似数据帧的结构(tibble,data.table)将只打印出最上面的几行,除非您修改一些参数来打印,但是您当然不需要遍历这些行

以下是我在Rmarkdown中的做法

确保在标记标题中选择了数据框打印选项:

---
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
```
为列表中的每个数据框制作打印数据框的文本表示

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

如果您想在R内部工作,可以多次调用grid::grid.table以将表格打印为pdf:

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

以下是一个非RMarkdown解决方案:

首先,我使用R中的
iris
数据集制作了一个可复制的表格示例列表`

tables <- list(a =  iris[1:10,], b = iris[11:20,], c = iris[21:30,])
这将生成一个多页PDF文件:

进一步阅读:了解如何在此处设置网格图形的样式:。您可以更改表格的颜色、格式等


你使用rmarkdown感觉舒服吗?嗨,Russ,非常感谢你的帮助,但说到R,我还只是个婴儿。因此我从未使用过rmarkdown。在R有什么办法吗?谢谢罗斯抽出时间来帮助我。:)经过一些修改,是的,很酷。你能把你的代码的工作版本作为一个答案并接受它吗?我尝试了你的解决方案,效果很好,但不幸的是,它在我的列表中不起作用,我想,因为数据集相当大。总行数(包括所有数据帧)约为60000行。将我的答案与另一个答案中解释的方法结合起来:我的答案提供了循环多个表的结构,另一个显示了如何拆分它们。不幸的是,我不能教你这么多关于R银行的所有细节。你的解决办法很有帮助:)我想进一步扩大我的问题。您能帮助我在每次新数据帧启动时,如何将数据帧的名称(如数据帧中所示的Profession1、Profession2)作为标题包含在pdf文件中一次吗?
tables <- list(a =  iris[1:10,], b = iris[11:20,], c = iris[21:30,])
library(gridExtra)
library(grid)

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