我想知道是否可以在knitr
读取的外部R脚本中挂钩代码。
具体来说,假设您有以下R文件
test.R
## ---- CarPlot
library(ggplot2)
CarPlot <- ggplot() +
stat_summary(data = mtcars,
aes(x = factor(gear),
y = mpg
),
fun.y = "mean",
geom = "bar"
)
CarPlot
想象一下,您想在多个报告中使用此图表,但在其中一个报告中,您希望图表具有标题,而在另一个报告中则不需要。
理想情况下,我希望能够使用相同的外部R脚本来执行此操作,以便在我决定更改图表的某些内容时,我不必对多个R文件进行更改。
我认为,或许这样做的一种方法是将fig.show
chunk选项设置为hold
- 因为它会&#34; hold all plots and output them in the very end of a code chunk&#34; - 然后像这样在剧情上添加标题:
test.Rnw
\documentclass{article}
\begin{document}
<<external-code, cache=FALSE,echo=FALSE>>=
read_chunk('./test.R')
@
<<CarPlot,echo=FALSE,fig.show='hold'>>=
CarPlot <- CarPlot + ggtitle("Plot about cars")
@
\end{document}
然而,这不起作用。虽然打印了情节,但我试图追加的标题却没有显示出来。
有什么办法可以做我想做的事吗?
答案 0 :(得分:2)
您不希望显示由test.R
创建的情节,因此您应为该照片组设置fig.show = 'hide'
或include = FALSE
:
<<external-code, cache=FALSE,echo=FALSE,fig.show = 'hide'>>=
read_chunk('./test.R')
@
你做想要在修改后显示情节,所以你必须打印它:
<<CarPlot,echo=FALSE>>=
CarPlot <- CarPlot + ggtitle("Plot about cars")
CarPlot
@
如果您有一个大型代码块可以在中间打印一个绘图,但是您不希望在您的文档中显示该绘图直到结束,则使用 fig.show = 'hold'
。它并不适用于这种情况。