我正在和 knitr 合作
是否可以引用论文中的图表数据?
我有一个代码块,可以在论文的附录中生成一个图表。我知道如何引用图表本身
“图 5 显示了直方图...”
和
"figure \ref{fig:hist_fig} shows a histogram..."
并在附录中,
\begin{figure}
<<hist_fig, cache=FALSE, echo=F>>=
require(ggplot2)
@
\caption{\label{fig:hist_fig} An example histogram}
\end{figure}
与另一个以 # ---- hist_fig ---- 开头的 R 文件一起,包含生成直方图、平均值和方差的数据。
但是否可以在论文中引用图表中的数据?例如“图 5 的平均值是 6,方差是 3。”
这种方法是否适用于每次运行时都不相同的随机生成的数据集?
答案1
您可以缓存后面的代码块(cache = TRUE
)并使用knitr::load_cache()
它获取块中的对象。?knitr::load_cache
有关更多信息,请参阅帮助页面。
答案2
这是一个简单但功能较弱的解决方案。我更喜欢它,因为它避免了缓存(每次都很难做到正确)。缺点是您必须跟踪块(尽管如果您不这样做,您可能会收到错误)。
请注意,我使用的是assign
,这通常是不被接受的。但我认为在这里这是合理的。
\documentclass{article}
\begin{document}
<<figure_data>>=
figure_data <- function(.data){
current_chunk_label <- knitr::opts_current$get(name = "label")
assign(paste0(current_chunk_label, "_data"),
list(mean = mean(.data), variance = var(.data)),
inherits = TRUE)
}
@
<<hist_fig, fig.show='hide'>>=
library(magrittr)
rnorm(100) %T>%
figure_data %>%
hist
@
Figure \ref{fig:hist_fig} shows a histogram with mean \Sexpr{hist_fig_data$mean}
and variance \Sexpr{hist_fig_data$var}.
\appendix
\begin{figure}
\caption{}\label{fig:hist_fig}
\includegraphics{figure/hist_fig-1}
\end{figure}
\end{document}