2

次のような Knitr チャンクがあるとします。

library(xtable)

<<>>=
x <- matrix(c(0, 1, 2, 0, 4, 5))
xtable(x)
@

次の LaTeX コード (抜粋) が生成されます。

\hline
1 & 0,00 \\ 
2 & 1,00 \\ 
3 & 2,00 \\ 
4 & 0,00 \\ 
5 & 4,00 \\ 
6 & 5,00 \\ 
\hline

ただし、実際のテーブルはより大きく (12 x 6)、多くのゼロがあるため、ゼロ以外を見つけるのは非常に困難です。ローカル テーブルのフォーマット ガイドラインに従いたいと思います。このガイドラインでは、整数のゼロにハイフンを使用することを推奨しています (近似値のゼロとは対照的に)。言い換えれば、xtable()出力を次のようにしたいのです。

\hline
1 & - \\ 
2 & 1,00 \\ 
3 & 2,00 \\ 
4 & - \\ 
5 & 4,00 \\ 
6 & 5,00 \\ 
\hline

どうすればこれを達成できますか?私はRoptionsとknitropts_chunk関数を調べましたが、役に立ちませんでした。

4

1 に答える 1

5

(そうでなければ)マトリックス/テーブルに欠落データがない場合は、xtableのフォーマット機能を使用NAして、必要な結果を得ることができます。0 を に変更してから、オプションをNA使用してNA.stringprint.xtable

tmp <- x
tmp[tmp==0] <- NA
print(xtable(tmp), NA.string = "-")

を与える

% latex table generated in R 3.0.1 by xtable 1.7-1 package
% Fri Sep 20 13:25:27 2013
\begin{table}[ht]
\centering
\begin{tabular}{rr}
  \hline
 & x \\ 
  \hline
1 & - \\ 
  2 & 1.00 \\ 
  3 & 2.00 \\ 
  4 & - \\ 
  5 & 4.00 \\ 
  6 & 5.00 \\ 
   \hline
\end{tabular}
\end{table}

これを関数でラップして、0 から NA へのマッピングを他の分析から分離し、これが出力フォーマット専用であることを明確にすることもできます。

xtable0dash <- function(x, ...) {
  x[x==0] <- NA
  print(xtable(x, ...), NA.string = "-")
}
于 2013-09-20T20:29:08.807 に答える