以PDF格式创建并保存R的默认代码簿

时间:2012-05-14 02:34:52

标签: r pdf documentation

如果我加载data(mtcars),它会附带一个非常简洁的代码簿,我可以使用?mtcars调用它。

我有兴趣以相同的方式记录我的数据,并且将整齐的码本保存为pdf。

是否可以保存?mtcars的'内容'以及如何创建?

谢谢,Eric

P.S。我读过this thread

更新2012-05-14 00:39:59 PDT

我正在寻找仅使用R的解决方案;不幸的是,我不能依赖其他软件(例如Tex)

更新2012-05-14 09:49:05 PDT

非常感谢大家的答案。

阅读这些答案,我意识到我应该让我的优先事项更加清晰。因此,这里列出了我对这个问题的优先顺序。

  1. R,我正在寻找一个完全基于R。
  2. 的解决方案
  3. 再现性,即码本可以成为自动脚本的一部分。
  4. 可读性,文字应易于阅读。
  5. 可搜索性,可以使用任何标准软件打开并搜索的文件(这就是为什么我认为pdf将是一个很好的解决方案,但这被1到3推翻)。
  6. 我目前正在使用Hmisc软件包中的label()标记我的变量,最终可能会使用Label()从同一个软件包中编写.txt代码簿。

5 个答案:

答案 0 :(得分:6)

(我不完全确定你在追求什么,但是):

  • 与其他包文档一样,mtcars的文件是.Rd文件。您可以将其转换为其他格式(ASCII)而不是pdf,但生成pdf的常用方法确实使用pdflatex。

  • 但是,这样的.Rd文件中的大多数信息都是手工编写的(除非你使用另一个像rxygen / roxygen2这样的R软件包来帮助你自动生成部分信息。

  • 对于用户数据,通常Noweb更方便。
    .Rnw -Sweave-> - > .tex -pdflatex-> pdf肯定是这种文件最常用的方式。 但是,您可以使用它,例如使用Openoffice(如果已安装)或使用纯ASCII文件而不是TeX。

  • 查看使用纯ASCII文件可能更容易的包knitr。 (我不是专家,只是从Sweave切换

  • 如果html是一个选项,则Sweaveknitr都可以使用。

答案 1 :(得分:4)

我不知道如何获取单个数据集的pdf,但您可以使用以下命令从LaTeX版本构建整个datasets包的pdf:

path <- find.package('datasets')
system(paste(shQuote(file.path(R.home("bin"), "R")),"CMD", 
    "Rd2pdf",shQuote(path)))

我不确定这一点,但只有你必须拥有像MikTex这样的LaTeX程序才有意义。此外,我不确定这将如何在不同的操作系统上工作,因为我的是Windows,这对我有用。

PS这只是对你的问题的部分答案,因为你想为你的数据做这个,但如果没有别的,它可能会让球滚动。

答案 2 :(得分:2)

输入?mtcars时显示的帮助页面是从.Rd文件生成的,该文件是一个类似LaTeX的文件,用于所有R的帮助页面。虽然.Rd文件类似于LaTeX,但实际上并不需要知道LaTeX来读取或写入它们。实际的mtcars.Rd文件可在此处获取:http://commondatastorage.googleapis.com/jthetzel-public/mtcars.Rd,可以使用任何文本编辑器查看。

。安装包时,包的./man目录中包含的.dd文件将转换为.html文件。它们由“tools”包中的函数转换。如果您希望数据集具有?mtcars等功能,则需要为它们创建包。如果您之前从未创建过包,那可能听起来很复杂,但它很容易学习并且会让您成为更好的R程序员。 CRAN上有许多仅数据集包的示例,例如msProstate:http://cran.r-project.org/web/packages/msProstate/index.html。考虑下载包源以查看它的组织方式。

有关创建自己的包,编写.Rd文件和构建包的更多信息: http://cran.r-project.org/doc/manuals/R-exts.html,尤其是“1.1.5数据包”。

修改

如果你想将软件包中的.Rd文件转换为.pdf,你可以在构建软件包时这样做,但是你需要一个LaTeX编译器。如果您使用的是Windows,请参阅此处:http://cran.r-project.org/bin/windows/Rtools/

答案 3 :(得分:2)

您无法仅使用R创建PDF;您需要使用其他创建PDF的软件。

您可以使用utils::promptDatatools::Rd2HTML和一个简单的自定义函数的组合在用户的浏览器中打开创建的HTML文件。

制作包含数据集的包可能更容易。请查看“数据集”包中的示例。

答案 4 :(得分:1)

看起来如果你想生成一个pdf,总是需要像LaTeX这样的外部工具。我建议使用简单的ASCII文本格式来生成这样的文件。原则上.Rd文件也是ASCII文本,但我发现它们不是特别易读。

相反,我建议使用纯文本ASCII格式,例如Markdown(例如在StackOverflow上使用)来编写文本文件。这样的文件比.Rd格式的文件更具可读性,作为奖励,如果您以后选择这样做,它可以很容易地被处理成PDF。我认为knitr包能够从Markdown源生成PDF文件。此外,knitr允许您在Markdown文本中混合使用R代码。可以评估此​​代码,并将结果(甚至数字)添加到生成的PDF中。

在实践中,您可以使用sprintf生成可以管道传输到文件的字符向量,以便动态生成降价文本。只需编写一次模板,然后标记要添加的文本的位置,如下所示:

base_text = "
First header
============

This document was generated on %s, by %s.
"
text_forfile = sprintf(text, some_date, some_name)

只需将text_forfile中的文本转储到.md文件即可完成,无需外部工具。有关如何将文本转储到文件,请参阅this post on SO