在rmarkdown/knitr中使用.Last.value

jan*_*cki 2 r knitr r-markdown

拥有和Rmd文件的内容如下:

```{r}
data.frame(a=1)
str(.Last.value)
```
Run Code Online (Sandbox Code Playgroud)

它渲染data.frame但渲染str(.Last.value)产生## NULL.
是否有任何编织选项或技巧可以让它按预期工作?
第二个预期的输出

## 'data.frame':    1 obs. of  1 variable:
##  $ a: num 1
Run Code Online (Sandbox Code Playgroud)

Yih*_*Xie 5

因为所有码块被通过评估eval()knitr,码块的最后一个表达式不是顶级 R的表达,而.Last.value不会为工作knitr.

为了更清楚:

x = 1
x  # a top-level expression if typed in the R console
Run Code Online (Sandbox Code Playgroud)

相比之下,x不再是顶级表达式eval():

some_internal_knitr_function() {
  # internal code
  eval(parse(text = c('x = 1', 'x')))
  # more internal code
}
Run Code Online (Sandbox Code Playgroud)