标签: r-markdown

将自定义函数传递给 RMarkdown YAML df_print 以在编织 HTML 输出时打印数据帧

这是我在 Stack Overflow 上的第一篇文章,所以如果这是一个格式不正确或不可重现的问题,请原谅我。我尝试将以下自定义数据表打印函数('print.me')传递到 RMarkdown 中的 YAML 标头,以将 df_print 编织为 HTML:

print.me <- function(x) {
  x <- x %>% kbl(digits=2, align= 'l', booktabs=T) %>% 
   kable_styling(fixed_thead = T, position ="float_right") %>% 
   kable_paper("striped", full_width = T, fixed_thead = T, 
   html_font = "Helvetica", font_size = 11) %>% 
   row_spec(0, color = "yellow", background = "#5b705f", font_size = 12) %>% 
   scroll_box(width = "700px", height = "300px")
   return(x)
}
Run Code Online (Sandbox Code Playgroud)

此函数成功呈现了我在从 RMarkdown 打印 mtcar 时所希望的数据帧格式:

在此输入图像描述

问题是我无法找到一种方法来成功地将“print.me”传递到 YAML 标头,以便“print.me”成为编织到 HTML 时渲染数据帧的默认方法。我在 YAML 标头中的代码如下所示:

df_print: !expr 'print.me'
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误消息:

错误:找不到对象“print.me” …

yaml r knitr r-markdown kableextra

2
推荐指数
1
解决办法
754
查看次数

如何使用 Knit 块选项删除 R Markdown HTML 输出周围的边框

在 R Markdown 中将 R 代码块编织为 HTML 时,可以通过设置块选项(图形高度、显示消息/警告等)来更改某些视觉元素。我很好奇是否有一个块选项可以删除代码返回的框周围的灰色边框。例如,如果我运行以下命令:

```{r}
head(mtcars)
```
Run Code Online (Sandbox Code Playgroud)

它的输出是这样的: 代码输出

代码显示在带有灰色边框的浅灰色背景上,返回显示在带有灰色边框的白色背景上。有没有办法删除代码、返回或两者周围的灰色边框?

感谢您的帮助。

html r knitr r-markdown

2
推荐指数
1
解决办法
1874
查看次数

RMarkdown Bootstrap 导航栏

我希望将 Bootstrap 导航栏(如下所示: https: //getbootstrap.com/docs/4.0/components/navbar/)添加到我正在创建的 R Markdown 模板中。

通过阅读,我了解了如何从另一个文件添加 HTML 元素并在 R Markdown 中调用它们。

但是,是否有办法在 Markdown 文件中包含 HTML 代码,这样导航栏仍然会被添加,但我只需要一个页面来显示结果?

r r-markdown

2
推荐指数
1
解决办法
2851
查看次数

R:如果编织到 HTML 时可以只运行一个绘图块,如果编织到 PDF 或 DOCX 则可以只运行一个 ggplot2 块?

目前情况:我正在编写一个 rMarkdown 文档,它的工作完全符合预期。当编织到 HTML 时,10 个绘图块中的每一个都会生成一个交互式绘图图表,并且它们工作得非常好。当编织为 PDF 或 DOCX 时,会显示每个代码块,但每个绘图不会(如预期),因为这些文件类型无法显示 HTML 内容。

目标:在编织到 HTML 时获取要渲染的绘图,但在编织到 PDF 或 DOCX 时让 ggplots 在其位置渲染(而不是在 HTML 下回显、评估或渲染),无需手动调整回显和/或评估每次针织运行中每个图的参数。

尝试过

  • 可以在 YAML 标头中创建参数,但无法使其适应 YAML 标头的输出元素。
  • 无法从块内直接访问 YAML 标头的输出元素来设置 if-else 条件。

当前非首选选项

  1. 保持原样,代码显示在所有三个输出中,但绘图仅显示在 HTML 输出中(PDF 和 DOCX 的报告不完整)。

  2. 为每个绘图块编写一个额外的 ggplot2 块,并将所有 echo 和 eval 设置为 true,从而为 HTML 输出中的 10 个变体中的每一个生成一个交互式绘图和一个静态绘图(总共 20 个绘图,非常重复)以及 PDF DOCX 输出回显并评估两个代码块(重复),但仅渲染 ggplot(大量不合适的未渲染绘图代码)。

  3. 为每个绘图块编写一个额外的 ggplot2 块,并手动调整每次 knit 运行的 echo 和 eval 参数(很容易错过某些内容并犯错误)。

需要:一个优雅的解决方案,可以在编写 HTML 时自动回显和评估代码块 A 并忽略代码块 B,同时在编写 PDF …

pdf r r-markdown plotly

2
推荐指数
1
解决办法
876
查看次数

将主管和其他信息添加到 bookdown pdf_book 中

我想在 bookdown 中写的论文中包含我的导师的姓名、课程名称等。我特别希望这些信息位于不同的行中。到目前为止,我已经在 yaml 中尝试过:

--- 
title: "Term Paper Title"
author:
        - "Bird"
        - "Supervisor: Hummingbird"
        - "Course: Ornithology"
        - "University: XXX State University"
date: "Summer Semester: 2021"
site: bookdown::bookdown_site
output:
  bookdown::pdf_book:
    includes:
      in_header: preamble.tex
documentclass: book
classoption: openany
bibliography: [book.bib, packages.bib]
biblio-style: apalike
link-citations: yes
mainfont: Times New Roman
fontsize: 12pt
geometry: "left=3cm, right=2cm, top=2.5cm, bottom=2.5cm"
linestretch: 1.5
toc-depth: 1
secnumdepth: 1
---
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

这里我的名字和主管的名字等等都在一行。我怎样才能强迫他们处于不同的行?例如我想要这样的东西(摘自这篇文章

latex pdflatex pandoc r-markdown bookdown

2
推荐指数
1
解决办法
416
查看次数

在许多不同的数据集上运行 R Markdown 并单独保存每个 knitted word 文档

我创建了一个 R Markdown 来检查一系列数据集中的错误(例如,给定列中是否有空格?如果有,则打印一条语句,说明存在 NA 以及哪些行具有 NA)。我已经设置 R Markdown 来输出bookdown::word_document2. 我有大约 100 个数据集,需要在其上运行相同的 R Markdown 并分别为每个数据集获取 Word 文档输出。

\n

有没有办法在所有数据集上运行相同的 R Markdown 并为每个数据集获取一个新的 Word 文档(这样它们就不会被覆盖)?所有数据集都位于同一目录中。我知道每次编织文档时输出都会被覆盖;因此,我需要能够根据数据集/文件名保存每个word文档。

\n

最小的例子

\n

创建包含 3 个 .xlsx 文件的目录

\n
library(openxlsx)\n\nsetwd("~/Desktop")\ndir.create("data")\n\ndataset <-\n  structure(\n    list(\n      name = c("Andrew", "Max", "Sylvia", NA, "1"),\n      number = c(1, 2, 2, NA, NA),\n      category = c("cool", "amazing",\n                   "wonderful", "okay", NA)\n    ),\n    class = "data.frame",\n    row.names = c(NA,-5L)\n  )\n\nwrite.xlsx(dataset, \'./data/test.xlsx\')\nwrite.xlsx(dataset, \'./data/dataset.xlsx\')\nwrite.xlsx(dataset, \'./data/another.xlsx\')\n
Run Code Online (Sandbox Code Playgroud)\n

RMarkdown

\n
---\ntitle: Hello_World\nauthor: "Somebody"\noutput:\n  bookdown::word_document2:\n    fig_caption: …
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown bookdown

2
推荐指数
1
解决办法
1572
查看次数

使用 csl 文件设置 Rmarkdown 参考书目中参考项目之间的间距

我目前正在尝试在使用 csl 文件时在 Rmarkdown 文件中正确格式化我的参考书目。

使用 natbib 时,引用项之间的间距工作正常,但是使用 csl 文件时,不会产生适当的间距。

由于其他几个原因,我不想使用 natbib 但使用 csl

由于 \setlength\bibitemsep 或类似的不适用于 csl 。

YAML


font-family: Arial
mainfont: Arial
header-includes:
   - \pagenumbering{gobble}
   - \usepackage{caption}
   - \usepackage{float}
   - \captionsetup[figure]{font=footnotesize,format=hang,labelfont=bf,textfont=it,width=.95\textwidth}
output:
  bookdown::pdf_document2:
    includes:
    text-align: justify
    latex_engine: "xelatex"
    number_sections: yes
    fig_caption: yes
    toc: false
geometry: "left=3cm,right=3cm,top=2.5cm,bottom=2.5cm"
fontsize: 12pt
bibliography: Microt.bib
csl: the-journal-of-cell-biology.csl
linestretch: 1.5
link-citations: yes
editor_options: 
  markdown: 
    wrap: sentence
Run Code Online (Sandbox Code Playgroud)

然后在 rmd 的末尾:


\```{=tex}
\newpage
\pagenumbering{gobble}
\```

# Literature {.unnumbered}
\singlespacing

Run Code Online (Sandbox Code Playgroud)

使用 csl 时,空间太小

csl间距

有了 natbib,空间就很好了

citation_package: natbib …

r bibtex xelatex r-markdown csl

2
推荐指数
1
解决办法
1030
查看次数

Quarto/RMarkdown 到 PDF:如何增加表格子标题之间的边距?

我使用 Quarto/RMarkdown 导出一个 PDF,其中包含一个代码块,该代码块可生成两个表(包括)。子帽。

如何增加下层子上限与上层表格的边距?

我的代码:

#| label: tbl-1985
#| tbl-cap: "*Was Wann Wo* im Jahr 1985"
#| tbl-subcap: 
#|   - "Auswertung nach Kategorien"
#|   - "Besonderheiten"
#| layout-nrow: 2
#| fig-pos: 'H'

# table 1
df_table_1 %>% 
    knitr::kable(., caption = paste0("\\textit{Was Wann Wo} im Jahr ", year)) %>%
    kableExtra::kable_styling(latex_options = "scale_down")

# table 2
df_table_2 %>% 
    knitr::kable(., caption = paste0("Besonderheiten im Jahr ", year)) %>% 
    kableExtra::column_spec(2, width = "12cm")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

latex pandoc r-markdown kable quarto

2
推荐指数
1
解决办法
783
查看次数

VSCode 中显示“错误:需要 pandoc 版本 1.12.3 或更高版本”,但可以在 R Studio 中使用

我在尝试设置 rmarkdown 以在 VSCode 中工作时遇到问题。我已经尝试过Sys.setenv(RSTUDIO_PANDOC = "path"),但是如果我将其设置为 R Studio 成功使用的相同路径,如果我这样做,rmarkdown::pandoc_available()它仍然会返回[1] FALSE.

我还尝试在 VSCode settings.json 中将其设置为环境变量。再说一次,我可以在 R Studio 中毫无问题地编织。我在 StackOverflow 上查看了许多类似问题的答案,但到目前为止,没有一个对我有用。我运行的是 Windows 10。

编辑:
r$> Sys.getenv("RSTUDIO_PANDOC")
返回
[1] "C:/Program Files/RStudio/bin/quarto/bin/tools/pandoc.exe"

我尝试过跑步
Sys.setenv(RSTUDIO_PANDOC = "C:/Program Files/RStudio/bin/quarto/bin/tools/pandoc.exe")

我的 settings.json 文件包含这个

"terminal.integrated.env.windows": { "RSTUDIO_PANDOC":"C:/Program Files/RStudio/bin/quarto/bin/tools/pandoc.exe" }
Run Code Online (Sandbox Code Playgroud)

windows r pandoc r-markdown visual-studio-code

2
推荐指数
1
解决办法
2611
查看次数

rmarkdown 从文件中读取代码并高亮显示

我有两个 RMarkdown 文件。main.Rmd这是渲染的主文件,example.Rmd它包含更长的示例并在其他地方使用(因此它位于自己的文档中)。

我想example.Rmd在文件中包含突出显示其 RMarkdown 代码的代码,但不需要执行main.Rmd代码,就好像我手动将所有代码设置并复制到块中一样。example.Rmdeval=FALSE

MWE 的一个例子是

main.Rmd

---
title: This is main.rmd
output: html_document
---

```{r}
# attempt that doesnt work
cat(readLines("example.Rmd"), sep = "\n")
```
Run Code Online (Sandbox Code Playgroud)

并在example.Rmd

---
title: This is example.rmd
output: html_document
---

```{r}
# code that is not executed but shown in main.Rmd
data <- ...
```
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown

2
推荐指数
1
解决办法
474
查看次数