在R中,如何阻止xtable自动舍入?

时间:2011-10-25 10:20:05

标签: r rounding dataframe xtable

在这种情况下如何禁用自动舍入?

> x <- c(2.222, 3.333, 6.6666)
> df <- data.frame(x)
> df
       x
1 2.2220
2 3.3330
3 6.6666
> xtable(df)

结果

% latex table generated in R 2.11.1 by xtable 1.5-6 package
% Tue Oct 25 12:13:08 2011
\begin{table}[ht]
\begin{center}
\begin{tabular}{rr}
  \hline
 & x \\ 
  \hline
  1 & 2.22 \\ 
  2 & 3.33 \\ 
  3 & 6.67 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

我无法在docs of xtable中找到任何选项将其关闭。

4 个答案:

答案 0 :(得分:11)

digits怎么样?

xtable(df,digits=4)
% latex table generated in R 2.12.2 by xtable 1.5-6 package
% Tue Oct 25 11:39:25 2011
\begin{table}[ht]
\begin{center}
\begin{tabular}{rr}
  \hline
 & x \\ 
  \hline
1 & 2.2220 \\ 
  2 & 3.3330 \\ 
  3 & 6.6666 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

答案 1 :(得分:0)

请参阅@James的答案以获得正确的答案(我甚至没有检查过,因为我认为@mmmasterluke实际上已经阅读了文档)。

作为替代方案,您可以使用包toLatex中的memisc

library(memisc)
x <- c(2.222, 3.333, 6.6666)
df <- data.frame(x)
toLatex(df, digits=4)

给你

\begin{tabular}{D{.}{.}{4}}
\toprule
\multicolumn{1}{c}{x} \\
\midrule
2.2220 \\
3.3330 \\
6.6666 \\
\bottomrule
\end{tabular}

它还有许多其他选项可用于配置Latex输出。

答案 2 :(得分:0)

如果您已使用首选舍入格式化数据框,并且不想为每列重新键入数字,则一种解决方案是将所有内容都转换为文本。我刚刚定义了一个函数,然后我在其他地方使用xtable

myxtable <- function(x, ...) xtable(apply(x, 2, as.character), ...)

然后,只要您使用myxtable的返回值,就可以使用xtable的返回值,但格式完整。

答案 3 :(得分:0)

您可以通过将所有列转换为字符串来实现,但它可能会生成一些警告消息:

> xtable(df, display=rep("s",ncol(df)+1))

% latex table generated in R 3.3.3 by xtable 1.8-2 package
% Tue Oct 24 12:43:58 2017
\begin{table}[ht]
\centering
\begin{tabular}{rr}
  \hline
 & x \\ 
  \hline
1 &  2.222 \\ 
  2 &  3.333 \\ 
  3 & 6.6666 \\ 
   \hline
\end{tabular}
\end{table}
Warning message:
In formatC(x = c(2.222, 3.333, 6.6666), format = "s", digits = 2,  :
  trasformo l'argomento in "character" in format="s"