【发布时间】:2017-11-14 11:18:42
【问题描述】:
在 Windows 7 64 位上,我最近更新到 RStudio 1.1.383 和 rmarkdown 1.7。当我使用 render 从 Rmd 文件生成 pdf 时,我注意到了一种新行为。
- 全球环境和针织环境之间存在泄漏,这是双向的:
- 如果我在.Rmd文件中定义
x = 12,渲染完成后我会在全局环境中找到x。 - 如果我在 .Rmd 中使用未定义变量
y并在使用render之前在全局环境中设置y=1000则y用于 .Rmd 的编织 - 如果我从 RStudio 编织,则不会发生泄漏,即使在全局环境中定义了
y,编织 .Rmd 也会出错(未找到)。
有谁知道这是为什么?我相信分离环境对于确保可重复性非常重要,即使有时做对会很痛苦。
这是我的sessionInfo():
> sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] rmarkdown_1.7
loaded via a namespace (and not attached):
[1] compiler_3.4.2 backports_1.1.1 magrittr_1.5 rprojroot_1.2 htmltools_0.3.6 tools_3.4.2 yaml_2.1.14 Rcpp_0.12.13
[9] stringi_1.1.5 knitr_1.17 stringr_1.2.0 digest_0.6.12 evaluate_0.10.1
这是最小的“test render.R”文件:
library(rmarkdown)
y=1000
render(input = "test render.Rmd")
这是最小的“test render.Rmd”文件:
---
title: "test render"
author: "Courvoisier"
output: pdf_document
---
## R Markdown
```{r cars}
x = 12
print(y)
```
这是 pdf 结果:
【问题讨论】:
-
这对community.rstudio.com来说可能是一个更好的问题。
-
没错,但他们建议先把它放在这里
-
如果有帮助的话,我相信
rmarkdown1.7 昨天发布了,并且相对于 1.6 和 1.5 有很多变化。 -
啊,谢谢。我以为是八月份(github上的发布版)。我猜它昨天才在 CRAN 上播出。
-
@lmo StackOverflow 完全没问题,我个人强烈推荐 StackOverflow 进行问答。作为 rmarkdown 包的维护者,我很少阅读 community.rstudio.com 上的帖子(我只是没有时间),但我阅读了 StackOverflow 上的每一篇帖子。我们不建议用户在两个站点之间来回移动,除非 SO 上的问题显然不适合作为问题。
标签: r rstudio knitr r-markdown