如何使\ Sexpr {}忽略NA

时间:2016-05-10 15:31:53

标签: r rstudio sweave

我遇到了以下问题。我为ifcase定义了一个Latex命令,可以从几个选项中进行选择。然后我有一些r代码确定ifcase中使用的数字通过\ Sexpr {}。我的问题是,当\ Sexpr产生NA时,那些也出现在输出文件中。我希望MWE有助于澄清我的意思,否则请不要犹豫。

['foo lorem ipsum \\pope\n24 dolor sit amet, consectetur adipisici elit\nExcepteur sint obcaecat cupiditat non \ngnu blu bar=1',
 'foo lorem ipsum @>@!@ consectetur adipisici elit\ngnu blu bar=2',
 'foo lorem ipsum\n23 dolor sit amet, consectetur adipisici elit\ngnu blu bar=3']

输出读取" B C NA"但我只想要" B C"

1 个答案:

答案 0 :(得分:1)

这里的问题是\ifcase只允许整数参数,NA看起来不像LaTeX。您需要将NA更改为某个不在案例列表中的整数值。例如,此版本将NA转换为-1,这将永远不会匹配大小写:

\documentclass{article}
\begin{document}
\SweaveOpts{concordance=TRUE}

\newcommand{\QPR}[1]
{
\ifcase #1
\or 
         A
\or
         B
\or
         C
\fi
}

<<g, echo=FALSE, results=tex,prefix=FALSE>>=
S=2:3
hideNA <- function(x) if (is.na(x)) -1 else x
@

\QPR{\Sexpr{hideNA(S[1])}}
\QPR{\Sexpr{hideNA(S[2])}}
\QPR{\Sexpr{hideNA(S[3])}}

\end{document}