Sexpr在sweave中评估不正确?

时间:2017-10-28 02:40:28

标签: r sweave

我正在尝试使用考试包进行多项选择题测试。我创建了一个名为问题的5个问题的向量。例如,第一个条目创建如下:

questions[1]<-"$f(x)=\\Sexpr{a}x^2+1$"

先前已对a进行了采样。

现在我要输出pdf文件。 TeX部分现在写着:

 \begin{question}
*Question Statement Here*

<<echo=FALSE,results=hide, results=tex>>=
answerlist(questions)
@

\end{question}

问题是输出包含a而不是代表a的数值。但是,如果我手动输入

answerlist(questions)

进入命令行并复制粘贴结果代替

 <<echo=FALSE,results=hide, results=tex>>=
    answerlist(questions)
 @
然后我得到了理想的结果。

我该怎么强迫

<<echo=FALSE,results=hide, results=tex>>=
        answerlist(questions)
        @

准确输出 answerlist(questions)在命令行中的作用?

1 个答案:

答案 0 :(得分:1)

在阅读代码时,answerlist只是粘贴值

function (..., sep = ". ", markup = c("latex", "markdown")) 
{
    if (match.arg(markup) == "latex") {
        writeLines(c("\\begin{answerlist}", paste("  \\item", 
            do.call("paste", list(..., sep = sep))), "\\end{answerlist}"))
    }
    else {
        writeLines(c("Answerlist", "----------", paste("*", do.call("paste", 
            list(..., sep = sep)))))
    }
}
<environment: namespace:exams>

根据我的测试,以下

没有任何问题
\documentclass{exam}
\usepackage{Sweave}
\newenvironment{question}{\item \textbf{Problem}\newline}{}
\newenvironment{solution}{\textbf{Solution}\newline}{}
\begin{document}

<<init, echo=FALSE,results=hide, results=tex>>=
require(exams)
a=2;b=2
@

\begin{question}
When testing inside the R chunk I get :\\
<<test, echo=FALSE,results=hide, results=tex>>=
answerlist(a,b)
@
\newline
And this result is similar to what I get in Sexpr :\\
\Sexpr{paste(a,b,sep=". ")}
\end{question}
\end{document}

刚刚给出

nothing wrong here

所以这意味着您必须提供更多详细信息,我无法重现您的问题。请注意,我已经尝试使用考试包来测试,尝试使用questions <- matrix_to_mchoice(c(2,2))$questions之类的结果来理解您的结果,而这只是围绕$的值,这也适用于测试。