7

如果 Rmd 文件中的 R 代码重用相同的变量名,则内联 r 表达式似乎返回此变量的最后一个值,而不管内联表达式的位置。除了确保在文档的不同部分不重用相同的变量名之外,是否有办法避免这种行为?

可重现的例子

---
title: "R Notebook"
output: html_notebook
---


```{r}
df <- cars
nrow(df)
```

The dataset has `r nrow(df)` rows.


```{r}
df <- iris
nrow(df)
```

The dataset has `r nrow(df)` rows.

这会产生以下输出

在此处输入图像描述

我正在使用:R 版本 3.3.2 (2016-10-31) 平台:x86_64-w64-mingw32/x64 (64-bit) 运行于:Windows 7 x64 (build 7601) Service Pack 1

rmarkdown_1.4 knitr_1.15.1

4

2 回答 2

3

问题是在您的标题中,您正在“预览”您的文件,该文件实际上并没有从头开始运行您的代码。您必须将其编织成 HTML 以使其运行,以便您的内联代码正确。

问题标题

---
title: "R Notebook"
output: html_notebook
---

解决方案标题

---
title: "R Notebook"
output: 
    html_document: default
    html_notebook: default
---

其他注意事项

之前的解决方案有两个问题。首先,来自 RMarkdown 文档,“内联表达式不采用 knitr 选项”(见http://rmarkdown.rstudio.com/lesson-4.html结尾)

其次,前一个答案的 YAML 格式不正确,迫使 RStudio 实际编织文件。正确的格式会产生您遇到的相同问题

---
title: "R Notebook"
output: 
    html_notebook: default
---
于 2017-03-29T23:16:49.947 回答
2

一开始,我们可以指定cache = TRUE

---
title: "R Notebook"

output: 
html_notebook: default


---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
knitr::opts_chunk$set(cache=TRUE)
```


```{r}
df <- cars
nrow(df)
```

在此处输入图像描述

于 2017-03-25T19:37:22.117 回答