gpt4 book ai didi

R Markdown 文件: include help information

转载 作者:行者123 更新时间:2023-12-04 10:39:34 25 4
gpt4 key购买 nike

我想在 R markdown 文档的末尾包含有关 mtcars 数据集的帮助页面。

在我的文件中,我包含了以下内容:

```{r}
?mtcars
```

当我编译 Markdown (输出为 PDF - knitr)时,在处理此指令时,帮助页面出现在我的浏览器中,但生成的 pdf 缺少此部分。

有没有一种方法可以实现另一个然后从一个地方复制到另一个地方?

谢谢你。

最佳答案

我们可以改编谢一辉的 static_help function获取给定帮助文件的 html 源代码

static_help <- function(pkg, topic, out, links = tools::findHTMLlinks()) {
pkgRdDB = tools:::fetchRdDB(file.path(find.package(pkg), 'help', pkg))
force(links)
tools::Rd2HTML(pkgRdDB[[topic]], out, package = pkg,
Links = links, no_links = is.null(links))
}

如果我们将源代码写入一个临时文件,然后我们可以将其读回并去除页眉和页脚,为您提供帮助文件的正文以包含在您的 Markdown 文档中
```{r, echo = FALSE, results = "asis"}
static_help <- function(pkg, topic, out, links = tools::findHTMLlinks()) {
pkgRdDB = tools:::fetchRdDB(file.path(find.package(pkg), 'help', pkg))
force(links)
tools::Rd2HTML(pkgRdDB[[topic]], out, package = pkg,
Links = links, no_links = is.null(links))
}
tmp <- tempfile()
static_help("datasets", "mtcars", tmp)
out <- readLines(tmp)
headfoot <- grep("body", out)
cat(out[(headfoot[1] + 1):(headfoot[2] - 1)], sep = "\n")
```

编辑

上述解决方案生成 HTML 输出,而问题实际上要求 PDF 输出。我们可以修改上述内容以返回 latex 输出;这次唯一需要的后期编辑是切换 %\n
```{r, echo = FALSE, results = "asis"}
static_help <- function(pkg, topic, out, links = tools::findHTMLlinks()) {
pkgRdDB = tools:::fetchRdDB(file.path(find.package(pkg), 'help', pkg))
force(links)
tools::Rd2latex(pkgRdDB[[topic]], out, package = pkg,
Links = links, no_links = is.null(links))
}
tmp <- tempfile()
static_help("datasets", "mtcars", tmp)
out <- readLines(tmp)
out <- gsub("%", "\n", out, fixed = TRUE)
cat(out, sep = "\n")
```

但是 .Rd 文件依赖于 Rd.sty .让 LaTeX 找到 Rd.sty 的最简单方法是将副本放在与 .Rmd 文件相同的目录中。然后你需要定义一个自定义模板来替换 default pandoc LaTeX template .同样,最简单的解决方案是将默认模板的副本与 .Rmd 文件放在同一目录中,然后通过替换 \documentclass 之间的所有内容来修改它。命令和 \begin{document}命令(第 2 - 145 行)与命令
\usepackage{Rd}

最后修改 .Rmd 文件的元数据以使用新模板
---
output:
pdf_document:
template: template.tex
---

关于R Markdown 文件: include help information,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26480559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com