【发布时间】:2012-06-09 18:39:38
【问题描述】:
在 R markdown(knitr 包)中,我可以访问在代码块中计算的文档正文中的变量吗?
【问题讨论】:
标签: r knitr r-markdown
在 R markdown(knitr 包)中,我可以访问在代码块中计算的文档正文中的变量吗?
【问题讨论】:
标签: r knitr r-markdown
是的。您可以简单地调用任何先前评估的变量内联。
例如如果您之前使用df <- data.frame(x=1:10) 在块中创建了data.frame
`r max(df$x)`
应该产生
10
【讨论】:
r I(max(df$x)) 应该也能正常工作,而不是以代码格式排版。
我想补充一点,对于除 R 之外的其他语言,情况并非如此。我知道问题已经解决并且关于 R,但也许其他人会觉得这很有用:
除了engine='R'(默认),所有的chunk都在单独的session中执行,所以变量不能直接共享。如果我们想利用之前块中创建的对象,我们通常必须将它们写入文件(作为副作用)。对于 bash 引擎,我们可以使用 Sys.setenv() 将变量从 R 导出到 bash(示例)。另一种方法是使用(实验性)runr 包。
R 中的示例:
x = 4
print(x)
## [1] 4
Python 示例 2a):
x=1
print(x)
## 1
Python 示例 2b):
print(x)
## Traceback (most recent call last):
## File "<string>", line 1, in <module>
## NameError: name 'x' is not defined
仅供参考。
【讨论】:
r、python 和 julia。只有这些引擎在整个文档的同一会话中执行代码。”来源:bookdown.org/yihui/rmarkdown/language-engines.html
您可以访问以前创建的变量
`r variable`
但是如果变量是数字并且你想添加到pdf文档中,你应该将变量转换为字符串
`r toString(variable)`
【讨论】: