我有一个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文件的新页面上打印每个数据框。每个数据框中的记录或行数不同。我想我应首先遍历每个数据帧,然后将其循环遍历列表中数据框中的每一行,但我不知道如何操作。
感谢。
答案 0 :(得分:1)
首先,在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 paste(knit(out), collapse = "\n")`
如果你想在R本身内部工作,可以多次调用grid :: grid.table将表格打印成pdf:
library(grid)
pdf("my_file.pdf")
for(tt in my_tables){
grid.table(tt)
}
dev.off()
答案 1 :(得分:0)
这是一个非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文件:
进一步阅读:了解如何在此处设置网格图形样式:https://cran.r-project.org/web/packages/gridExtra/vignettes/tableGrob.html。您可以更改表格的颜色,格式等。