4

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

> 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}

我在xtable的文档中找不到任何选项来关闭它。

4

4 回答 4

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}
于 2011-10-25T10:39:59.717 回答
2

您可以通过将所有列转换为字符串来做到这一点,尽管它可能会生成一些警告消息:

> 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"
于 2017-10-24T10:46:16.757 回答
0

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

作为替代方案,您可以使用toLatexfrom package 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 输出。

于 2011-10-25T10:35:29.157 回答
0

如果您已经使用您喜欢的舍入格式化了数据框并且不想重新输入每一列的数字,那么一种解决方案是将所有内容都转换为文本。我刚刚定义了一个函数,然后在其他地方使用它来代替xtable

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

然后,myxtable可以在任何使用 的返回值的地方使用返回值xtable,但格式保持不变。

于 2017-04-27T15:13:31.743 回答