Knitr:引用本文后面图表中的数据

Knitr:引用本文后面图表中的数据

我正在和 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}

相关内容