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.string选项print.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 回答