【问题标题】:Horizontal xtable on summary of data from read.csv来自 read.csv 的数据摘要的水平 xtable
【发布时间】:2014-04-26 17:29:41
【问题描述】:

我有一个如下所示的 CSV 文件:

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

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

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

【问题讨论】:

    标签: r xtable


    【解决方案1】:

    xtable 最初是为表格开发的,特别是二维列联表,然后扩展到可能以这种方式出现的各种其他输出。它从未扩展到 summaryDefault 类的对象,这就是您的 s 对象。当您使用t 将其强制转换为矩阵时,它会变成一个二维对象,然后它会强制转换为具有一个行名“1”的数据框,默认情况下会打印该数据框。 @gagolews 为您提供了绕过它的方法,尽管我认为 xtable 的帮助页面在细节上有点吝啬。查看代码很有帮助。虽然大部分是隐藏的:

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

    【讨论】:

    • 感谢您的解释!另外,我尝试了stargazer 库,它确实有效。
    • +1 表示methods()。请注意,没有xtable.default 函数,因此不支持任何其他对象类型。
    • 是的。他收到的错误消息来自xtable.table,这就是我推断它是“原始”功能的方式。
    • 希望我能投票更多。感谢您的详尽解释。
    • 别担心。如果你提到 stargazer 包,我会再给你一个赞成票。
    【解决方案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

    【讨论】:

    • 当你删除方法列表时我笑了。看起来我们都在努力避免重叠的细节。
    • 你是第一个这样做的人 :)
    猜你喜欢
    • 2016-12-31
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2018-04-16
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    相关资源
    最近更新 更多