1

该函数\Sexpr{}无法识别矩阵对象。例如,我正在使用 R 中的“exams”包设置考试问题。我有两个通过 R 命令生成的对象 1. opt.obj.val 2. opt.sol。对象opt.obj.val返回标量值,而opt.sol返回矩阵对象。我想在问题的解决方案部分使用这两个对象。\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}
4

1 回答 1

2

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

示例: hessiancholesky,在包中提供。

细节:

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