在R

时间:2015-08-19 17:19:12

标签: r pdf

这是我对StackOverflow的第一个问题,所以如果我做错了,请告诉我。

我使用R生成大量非常大的PDF文档。我的数据大约是580,000个观察结果,分为32个类别,每个类别包含70个答案,介于20到300个问题之间。目前我使用两个for循环(我试图避免for循环,但是为了创建这些pdf,它是唯一有效的方法)。第一个通过并为具有标题页的类别创建pdf,然后第二个为每个图表添加一个页面,显示该问题的结果。我正在使用ggplot2& " pdf"功能

该脚本效果很好,创建了32个pdf(每个类别一个),其中包含自定义标题页和该类别中所有问题的页面。我想在标题页后面添加一个目录。我知道如何添加带有标签和页码的页面,但我需要一个链接到每个问题的页面。

我搜索了这个网站和谷歌,但是在R中找不到任何办法。这个问题:Adding a table of contents to PDF with R plots谈到使用RPython。我也遇到过提及" hyperref",LaTex,Pandoc和Knitr的消息来源。我知道如何在Rmarkdown文档中使用Kintr,但这并不适用于我尝试做的事情。我不确定如何与其他任何人合作,因此使用它们的解决方案超出了我的想象。

是否有办法创建目录或只是在R内部的PDF页面的超链接,而不使用其他语言?

2 个答案:

答案 0 :(得分:1)

您是否尝试过单击目录中的部分名称?默认情况下,这些似乎是超链接的,虽然没有任何颜色暗示它。

为了帮助您了解可能发生的情况,请添加/更改您的YAML标头以添加以下内容:

output:
  pdf_document:
    keep_tex: true
    toc: true
    toc_depth: 3

这将保留中间.tex文件。如果你在编织后打开它,你应该已经看到了对hyperref的引用。

然后我发现我的目录定义为:

{
\hypersetup{linkcolor=black}
\setcounter{tocdepth}{3}
\tableofcontents
}

产生超链接TOC,但带有“黑色”超链接!

如果你想改变颜色并看到它们出现,你可以在RSudio中打开tex文件,只需将“黑色”更改为“蓝色”并让RStudio运行“编译PDF”,你会看到它们出现

如果您希望页码超链接而不是描述,请将以下内容添加到您的YAML中:

header-includes:
   - \hypersetup{linktocpage}

分享&享受!

答案 1 :(得分:0)

我只记得我把它打开了,以为我会回去发布我最终解决它的问题,好吧。我使用R Markdown文件创建了一个组合的pdf,而不是R脚本,其中包含所有部分及其后续问题作为不同级别。我能够为每个部分单独创建一个pdf,其中包含链接的可点击目录,包括所有问题(页面)和标题页面的不同标题级别。

密钥是pandoc.header,它允许我创建标题,显示在TOC中。我认为for循环和为每个页面创建的ggplot都不相关。以下是.rmd:

的概述
title: 
author: 
output: 
    pdf_document:
        toc: true

```{r results = "asis", message=FALSE, warning=FALSE, echo=FALSE, fig.height = 11, fig.width = 8}

for(i in 1:length(categories){

pandoc.header(paste("Category ",category_num, ": ", category discription), level = 1)

category title page

for(i in 1:numberofquestions){

pandoc.header(paste("Question ",question_num, ": ", subtitle1), level = 2)

print(ggplot())

}}

```

唯一不方便的部分是每个页面都必须有一个标题要链接到,我真的不喜欢标题页有一个,但看起来我可以用{{3}手动编辑它}。