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

时间:2017-03-25 18:51:43

标签: 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.

这会产生以下输出

enter image description here

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

rmarkdown_1.4 knitr_1.15.1

2 个答案:

答案 0 :(得分:3)

问题是,在标题中,您正在预览&#34;您的文件,实际上并不是从头开始运行您的代码。您必须将其编织为HTML才能使其运行,以便您的内联代码正确无误。

问题标题

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

解决方案标题

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

其他笔记

以前的解决方案有两个问题。首先,从RMarkdown文档中,&#34;内联表达式不采用knitr选项&#34; (见http://rmarkdown.rstudio.com/lesson-4.html的结尾)

其次,上一个答案的YAML格式不正确,迫使RStudio真正编织文件。正确的格式化会产生同样的问题

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

答案 1 :(得分: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)
```

enter image description here