0

我想知道是否可以挂钩到外部 R 脚本中的代码,该脚本由knitr.

具体来说,假设您有以下 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块选项设置为hold——因为它将“保存所有图并在代码块的最后输出它们”——然后在图上附加一个标题,如下所示:

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}

但是,这不起作用。虽然打印了情节,但我尝试附加的标题没有显示出来。

有什么方法可以做我想做的事吗?

4

1 回答 1

2

您不想显示由 创建的图test.R,因此您应该为该块设置fig.show = 'hide'or :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'如果您有一个在中间打印绘图的大代码块,但您不希望绘图在文档中显示到最后,则使用此选项。它不适用于本案。

于 2015-06-05T01:25:28.793 回答