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()