2016-05-10 24 views
0

次の問題が発生します。私はいくつかのオプションから選択するifcase用のLatexコマンドを定義します。次に、\ Sexpr {}を介してifcaseで使用される数値を決定するいくつかのrコードがあります。私の問題は、\ SexprがNAを生成するとき、それらも出力ファイルに現れるということです。私は、MWEが私の言いたいことを明確にするのに役立つことを願っています。そうでなければ、躊躇しないでください。どのように Sexpr {}を無視するかNAを無視する

\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 
@ 

\QPR{\Sexpr{S[1]}} 
\QPR{\Sexpr{S[2]}} 
\QPR{\Sexpr{S[3]}} 

\end{document} 

答えて

1

の出力が「B C NA」を読み出すが、私は唯一の「B C」したいここでの問題は、\ifcaseが唯一の整数の引数を可能にし、NAはLaTeXの1つのように見えていないということです。 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} 
+0

ありがとうございました。これは、私が思い付いたc(S、99:199)で手動で値を追加するという回避策よりはるかに優れています。 – marco

関連する問題