来自read.csv的数据摘要的水平xtable

时间:2014-04-26 17:29:42

标签: r xtable

我有一个看起来像这样的CSV文件:

RTT,From,Req,Bytes,TTL
202,10.0.0.10,1,64,64
191,10.0.0.10,2,64,64
...

我正在尝试使用summary()生成一个LaTeX library(xtable),如下所示:

library(xtable)
pings <- read.csv("pings.csv")
s <- summary(pings$RTT)
xtable(t(s))

这会产生输出:

\begin{table}[ht]
\centering
\begin{tabular}{rrrrrrr}
  \hline
 & Min. & 1st Qu. & Median & Mean & 3rd Qu. & Max. \\
  \hline
1 & 40.70 & 42.70 & 43.40 & 44.90 & 44.10 & 202.00 \\
   \hline
\end{tabular}
\end{table}

这是几乎我想要的,除了包含空值和1的第一列。

显然,我缺少一些关于R中数据类型和转换的重要基础知识。问题当然是t(s)产生的:

      Min. 1st Qu. Median  Mean 3rd Qu.  Max.
[1,]  40.7    42.7   43.4  44.9    44.1 202.0

其中[,1]应解释xtable的输出。

任何人都可以向我指出我做错了吗?

如果我只是想在摘要上运行xtable,我会得到

> xtable(summary(pings$RTT))
Error in xtable.table(summary(pings$RTT)) : 
  xtable.table is not implemented for tables of > 2 dimensions

2 个答案:

答案 0 :(得分:3)

xtable是为表格开发的,特别是对于二维列联表,然后扩展到可能以这种方式出现的各种其他输出。它从未扩展到summaryDefault类的对象,这是s对象所在的对象。当你将它强制转换为具有t的矩阵时,它就变成了一个二维对象,然后它会强制转换为一个带有一个rowname的数据帧,&#34; 1&#34;默认打印。虽然我认为xtable的帮助页面在细节方面有点吝啬,但@gagolews给了你解决它的方法。查看代码很有帮助。虽然其中大部分是隐藏的:

> methods(xtable)
 [1] xtable.anova*           xtable.aov*             xtable.aovlist*        
 [4] xtable.coxph*           xtable.data.frame*      xtable.glm*            
 [7] xtable.lm*              xtable.matrix*          xtable.prcomp*         
[10] xtable.summary.aov*     xtable.summary.aovlist* xtable.summary.glm*    
[13] xtable.summary.lm*      xtable.summary.prcomp*  xtable.table*          
[16] xtable.ts*              xtable.zoo*            

   Non-visible functions are asterisked
> getAnywhere(xtable.matrix)
A single object matching ‘xtable.matrix’ was found
It was found in the following places
  registered S3 method for xtable from namespace xtable
  namespace:xtable
with value

function (x, caption = NULL, label = NULL, align = NULL, digits = NULL, 
    display = NULL, ...) 
{
    return(xtable.data.frame(data.frame(x, check.names = FALSE), 
        caption = caption, label = label, align = align, digits = digits, 
        display = display))
}
<environment: namespace:xtable>

答案 1 :(得分:2)

这由print.xtable()处理:

> library(xtable)
> print.xtable(xtable(t(summary(runif(10)))), include.rownames=FALSE)
% latex table generated in R 3.0.2 by xtable 1.7-3 package
% Sat Apr 26 20:03:32 2014
\begin{table}[ht]
\centering
\begin{tabular}{rrrrrr}
  \hline
Min. & 1st Qu. & Median & Mean & 3rd Qu. & Max. \\ 
  \hline
0.03 & 0.18 & 0.48 & 0.41 & 0.61 & 0.74 \\ 
   \hline
\end{tabular}
\end{table}

此处include.rownames=FALSE禁用输出行名称。有关详细信息,请参阅?print.xtable