【问题标题】:How to set global variables in R Markdown?如何在 R Markdown 中设置全局变量?
【发布时间】:2020-12-03 16:49:59
【问题描述】:

我有一个包含 4 块代码的降价文件,但所有块都依赖于同一个初始数据库。当我单独运行每个块时,没有问题发生,但是当我编织时,问题就开始了:块没有识别环境中已经存在的变量和数据集。 我通过再次加载所有数据集来解决这个问题,但效率不高。 我如何将第一个块中的所有变量转换为全局变量,即对所有块都可用。

```{r, echo=FALSE, message=FALSE, results='hide', warning=FALSE}
library(dplyr)
library(zoo)
library(tidyr)

variable1
variable2
```{r, echo=FALSE, message=FALSE, results='hide', warning=FALSE}

variable1 %>%
ggplot2(aes(x = date, y = whatever) +
geom_line()

例如,我在第一个块中有变量,这些变量将被绘制在另一个块中。但由于某种原因,这些变量不可用。 另一个问题:我必须在每个块中加载包。

如果有人可以提供帮助,我将不胜感激!

【问题讨论】:

  • 你能做一个可重现的小例子吗?这听起来不对 - 通常所有块都按顺序执行,而后面的块可以访问在早期块中创建的对象。
  • 我更新了帖子,也许更容易理解
  • 不幸的是,您的更新没有帮助:您所描述的不是 R Markdown 的行为方式。相反,它的行为与您期望的完全一样。
  • 当我们要求一个“可重现的例子”时,我们希望我们可以复制/粘贴到 Rmarkdown 文档中,编织并查看问题。您的示例无效 - 它会出错,因为 variable1variable2 未在任何地方定义。
  • 也就是说 - 你想要的行为是标准的。你得到的行为真的很奇怪。找出为什么会出现奇怪行为的最佳方法是找到最少量的代码来重现问题。如果您能找到一个我们可以运行的简短示例来显示问题,我们可以最终修复它并告诉您如何修复。另一方面,如果最小示例对我们来说工作正常,但给您带来了问题,我们知道要开始查看我们系统之间的差异。

标签: r r-markdown markdown


【解决方案1】:

您通常只使用通常标记为setup 的初始块。而且它甚至不必是一个“全局”(在<<- 赋值的意义上)变量:后续的块知道早期的块。

代码

---
title: demo
---

```{r setup, echo=FALSE}
suppressMessages(library(zoo))

startDate <- as.Date("2020-01-01")
```

Some text.


```{r code}
data <- zoo(1:3, order.by=startDate + 0:2)
print(data)
```

输出

抱歉截图

【讨论】:

    猜你喜欢
    • 2022-08-19
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多