我有一个 Markdown 文档,其中包含 R 代码Knitr
。对于渲染方程,我使用 LaTeX,只需在文本中编写其命令即可。假设我有以下 LaTeX 代码:
\begin{displaymath}
\mathbf{X} = \begin{bmatrix}
2 & 12\\
3 & 17\\
5 & 10\\
7 & 18\\
9 & 13\\
\end{bmatrix}
\end{displaymath}
当我将所有内容转换为 PDF 时,这为我提供了一个很好的数学矩阵表示(在方括号中)(完整的工作流程是:RMD -> knit -> MD -> pandoc -> TeX -> pandoc -> PDF)。
现在,假设我们希望从 R 对象(某个 R 矩阵)即时生成所述矩阵x
. In 这个帖子 https://stackoverflow.com/questions/20749444/converting-r-matrix-into-latex-matrix-in-the-math-or-equation-environment/20751549?noredirect=1#20751549我们确定如何生成所需的 LaTeX 代码(matrix2latex()
函数在那里定义)。现在的问题是如何得到Knitr
来评价它。我尝试了以下代码:
\begin{displaymath}
\mathbf{X} = `r matrix2latex(x)`
\end{displaymath}
但它只是在 R 输出应该在的地方产生空白(实际上是 NULL)。我很惊讶这个问题还没有被问过(至少我自己的搜索没有得到任何结果)。有什么想法可以让这项工作发挥作用吗?
EDIT:
按照建议,重写该函数而无需cat()
。这是该函数的工作版本以供将来参考:
m2l <- function(matr) {
printmrow <- function(x) {
ret <- paste(paste(x,collapse = " & "),"\\\\")
sprintf(ret)
}
out <- apply(matr,1,printmrow)
out2 <- paste("\\begin{bmatrix}",paste(out,collapse=' '),"\\end{bmatrix}")
return(out2)
}