除了 \Sexpr{} 之外,还有其他方法可以在 R 中编写矩阵对象吗?

Is there any alternative to \Sexpr{} to write a matrix object in R?

函数\Sexpr{}无法识别矩阵对象。例如,我在 R 中使用 'exams' 包设置考试问题。我有两个通过 R 命令生成的对象 1. opt.obj.val 2. opt.sol。对象 opt.obj.val returns 标量值而 opt.sol returns 矩阵对象。我想在问题的解决方案部分使用这两个对象。 \Sexpr{} 适用于标量值,例如 opt.obj.val 对象。但是,它无法识别矩阵对象 opt.sol。是否可以使用 \Sexpr{} 检索矩阵对象或是否有任何替代命令?

<<echo=FALSE, results=hide>>=
library(lpSolve)
P1 <- c(11, 12,  10, 9)
P2 <- c(6,  7,  500,   3)
P3 <- c(8,  8.5, 7.5, 9.5)
costs <- rbind(P1, P2, P3)
row.signs <- rep("=", 3) 
row.rhs <- c(30, 30, 30) # rhs values of rows  
col.signs <- rep("=", 4)
col.rhs <- c(15, 25, 40, 10) # rhs values of columns
opt.obj.val <- lp.transport(costs, "min", row.signs, row.rhs, col.signs, col.rhs)$objval
opt.sol <- lp.transport(costs, "min", row.signs, row.rhs, col.signs, col.rhs)$solution
@

\begin{question}
a) What is the optimal objective function value?
\begin{answerlist}
  \item \Sexpr{opt.obj.val} 
  \item 780 
  \item 350 
  \item 560
  \item 710
\end{answerlist}
\end{question}

\begin{solution}
\begin{answerlist}
  \item True.
  \item False.
  \item False.
  \item False.
  \item False.
\end{answerlist}

The optimal objective function value is \Sexpr{opt.obj.val}.

The optimal solution is \Sexpr{opt.sol}.

\end{solution}

\exname{Transportation}
\extype{schoice}
\exsolution{10000}
\exshuffle{TRUE}

解决方法:\Sexpr{toLatex(opt.sol)}代替\Sexpr{opt.sol}

示例: hessian and cholesky,在包中提供。

详情:

  • \Sexpr{x}命令主要用于将长度为1的原子向量嵌入到LaTeX文档中。由于矩阵是原子向量(具有暗淡属性),因此仅显示矩阵的第一个元素,并显示仅选择了第一个元素的警告。
  • 函数 toLatex() 是一个通用函数,具有用于几个 类 对象的方法。 exams 包提供了 matrix 对象的方法。如果您查看输出 toLatex(opt.sol),您会发现它 returns 是一个带有直接 {array}.
  • 的单个字符串
  • 默认情况下,toLatex(x) 方法将所有反斜杠转义两次,以便在 \Sexpr{} 中方便地使用它们。如果函数在 \Sexpr{} 之外使用,例如在 R/Markdown 练习中,则需要使用 toLatex(x, escape = FALSE)