内联R表达式返回不正确的值

Sas*_*sha 6 r r-markdown rnotebook

如果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.
Run Code Online (Sandbox Code Playgroud)

这会产生以下输出

在此输入图像描述

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

rmarkdown_1.4 knitr_1.15.1

小智 3

问题在于,在标头中,您正在“预览”文件,它实际上并没有从头开始运行您的代码。您必须将其编织为 HTML 才能运行,这样您的内联代码才是正确的。

问题标题

---
title: "R Notebook"
output: html_notebook
---
Run Code Online (Sandbox Code Playgroud)

解决方案标题

---
title: "R Notebook"
output: 
    html_document: default
    html_notebook: default
---
Run Code Online (Sandbox Code Playgroud)

其他注意事项

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

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

---
title: "R Notebook"
output: 
    html_notebook: default
---
Run Code Online (Sandbox Code Playgroud)