提取列表中的数据框并以 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,])
使用 grid
和 gridExtra
包,您可以将表格创建为图形设备。 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.
我有一个 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,])
使用 grid
和 gridExtra
包,您可以将表格创建为图形设备。 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.