如何使 options(width = 60) 在 R Markdown 中跨代码块持续存在,用作 RStudio 中的笔记本?
How to make options(width = 60) persist across code chunks in R Markdown used as notebook in RStudio?
我有一个 R Markdown 文件,我想通过交互式执行单个 (!) 代码块并查看它们的结果(例如,打印、表格、绘图)显示在代码块下,将其用作 RStudio 中的笔记本。特别是,此时我对编写整个 R Markdown 文件不感兴趣。 .Rmd 文件仅包含以下代码块 A、B 和 C。
```{r A}
options("width") # => 96 on my system
```
```{r B}
options(width = 60)
options("width") # => 60
```
```{r C}
options("width") # => 96 but I expected 60
```
当我打开 RStudio 的新实例时,打开 .Rmd 文件,使用 RStudio 的“清除 Knitr 缓存...”Knit 菜单项清除 knitr 缓存,然后 运行 块,一个由一,在列出的顺序中使用 RStudio 的块特定的“运行 当前块”按钮,我得到 96,我系统上的默认宽度,对于块 A,对于块 B 为 60,对于块 C 为 96。
为什么块 B 中设置的新全局宽度没有保留到块 C 中?
我在 macOS Catalina 上使用 RStudio 版本 1.4.1717 以及 rmarkdown 版本 2.10 和 knitr 版本 1.34。
有人问了一个关于 options(digits = N)
的类似问题 ,提问者只接受了一个答案。但是,答案中给出的示例未能证明 R 的全局选项跨块的持久性,因为相关代码块包含它们自己的 options(digits = ...)
调用。当我在没有 options(digits = ...)
调用的情况下使用额外的代码块在我的系统上测试该答案的示例时,在前一个块中设置的“数字”值 not 持续存在。
只有在 RStudio 中将文档用作笔记本时才会发生这种情况。如果编织整个文档,您应该会看到预期的行为。
我怀疑原因是 RStudio 根据编辑的大小设置了选项 window。我在其中看不到任何可以让您更改此行为的选项,但如果您查看 tools:rstudio
环境中的 .rs.rnb.*
对象,您可能会找到一个选项。它最初加载在 search()
列表中的位置 2。
我不确定你要编织什么,但我遇到了类似的问题,试图在编织到 markdown 文件时防止文本用硬 cut-off 60 换行,并设置 options(width = XXX)
似乎从来都不适合我。
相反,在 YAML header 中,您可以告诉 pandoc 不要换行,而是保留您在 .Rmd
.
中输入的文本
output:
md_document:
pandoc_args: ["--wrap=preserve"]
同样,不确定您是否编织到 .md
文件,但这可能有用。
我有一个 R Markdown 文件,我想通过交互式执行单个 (!) 代码块并查看它们的结果(例如,打印、表格、绘图)显示在代码块下,将其用作 RStudio 中的笔记本。特别是,此时我对编写整个 R Markdown 文件不感兴趣。 .Rmd 文件仅包含以下代码块 A、B 和 C。
```{r A}
options("width") # => 96 on my system
```
```{r B}
options(width = 60)
options("width") # => 60
```
```{r C}
options("width") # => 96 but I expected 60
```
当我打开 RStudio 的新实例时,打开 .Rmd 文件,使用 RStudio 的“清除 Knitr 缓存...”Knit 菜单项清除 knitr 缓存,然后 运行 块,一个由一,在列出的顺序中使用 RStudio 的块特定的“运行 当前块”按钮,我得到 96,我系统上的默认宽度,对于块 A,对于块 B 为 60,对于块 C 为 96。
为什么块 B 中设置的新全局宽度没有保留到块 C 中?
我在 macOS Catalina 上使用 RStudio 版本 1.4.1717 以及 rmarkdown 版本 2.10 和 knitr 版本 1.34。
有人问了一个关于 options(digits = N)
的类似问题 options(digits = ...)
调用。当我在没有 options(digits = ...)
调用的情况下使用额外的代码块在我的系统上测试该答案的示例时,在前一个块中设置的“数字”值 not 持续存在。
只有在 RStudio 中将文档用作笔记本时才会发生这种情况。如果编织整个文档,您应该会看到预期的行为。
我怀疑原因是 RStudio 根据编辑的大小设置了选项 window。我在其中看不到任何可以让您更改此行为的选项,但如果您查看 tools:rstudio
环境中的 .rs.rnb.*
对象,您可能会找到一个选项。它最初加载在 search()
列表中的位置 2。
我不确定你要编织什么,但我遇到了类似的问题,试图在编织到 markdown 文件时防止文本用硬 cut-off 60 换行,并设置 options(width = XXX)
似乎从来都不适合我。
相反,在 YAML header 中,您可以告诉 pandoc 不要换行,而是保留您在 .Rmd
.
output:
md_document:
pandoc_args: ["--wrap=preserve"]
同样,不确定您是否编织到 .md
文件,但这可能有用。