在R中,如何阻止xtable自动取整?

在R中,如何阻止xtable自动取整?,r,rounding,dataframe,xtable,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) 我在中找不到任何选项来关闭它。请参阅@James'的答案以获得正确答案(我甚至没有检查,因为我假设@mmmasterluke已经阅读了文档) 作为替代方案,您可以从packagememisc中使用toLatex: l

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

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

我在中找不到任何选项来关闭它。

请参阅@James'的答案以获得正确答案(我甚至没有检查,因为我假设@mmmasterluke已经阅读了文档)

作为替代方案,您可以从package
memisc
中使用
toLatex

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

它还有许多其他选项,您可以使用这些选项来配置Latex输出。

数字如何

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}

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

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

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

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

这并不能完全回答问题。我有一个例子,我希望数字按原样显示——我自己做了所有的舍入,例如,不希望整数显示为121.0000。
myxtable <- function(x, ...) xtable(apply(x, 2, as.character), ...)
> 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"