如何避免 xtable 在最终的 tex 输出中翻转 R 表的 x 和 y 轴?

如何避免 xtable 在最终的 tex 输出中翻转 R 表的 x 和 y 轴?

我使用 xtable 将 r 表转换为可操作的乳胶代码。

    <<echo=false>>=
attach(warpbreaks)
p2 <- round(tapply(breaks, list(tension), mean), digits=2) %>%
  as.table(.)
@

p2 如下所示:

  L     M     H 
36.39 26.39 21.67 

但是此代码创建的pdf的输出:

<<echo=false, results=tex>>=
library("xtable")
xtable(p2,
       align = "rr")
@ 

看起来(大约)像这样:

      x 
L 36.39 
M 26.39 
H 21.67

为什么它看起来不像 r 中的初始表以及我该如何修复它?

编辑:这是我通过此获得的 Tex 代码

\begin{table}[ht]
\centering
\begin{tabular}{rr}
  \hline
 & . \\ 
  \hline
L & 36.39 \\ 
  M & 26.39 \\ 
  H & 21.67 \\ 
   \hline
\end{tabular}
\end{table}

答案1

当您xtable在类型对象上应用时,将调用tablextable.table方法。此方法定义如下(使用 获取的代码getAnywhere(xtable.table)):

function (x, caption = NULL, label = NULL, align = NULL, digits = NULL, 
    display = NULL, auto = FALSE, ...) 
{
    if (length(dim(x)) == 1) {
        return(xtable.matrix(matrix(x, dimnames = list(rownames(x), 
            names(dimnames(x)))), caption = caption, label = label, 
            align = align, digits = digits, display = display, 
            auto = auto, ...))
    }
    else if (length(dim(x)) == 2) {
        return(xtable.matrix(matrix(x, ncol = dim(x)[2], nrow = dim(x)[1], 
            dimnames = list(rownames(x), colnames(x))), caption = caption, 
            label = label, align = align, digits = digits, display = display, 
            auto = auto, ...))
    }
    else {
        stop("xtable.table is not implemented for tables of > 2 dimensions")
    }
}

因此,表格被转换为矩阵,然后xtable在矩阵上调用。将列表转换为矩阵时,值将显示在列中:

> matrix(p2,dimnames=list(rownames(p2)))
   [,1]
L 36.39
M 26.39
H 21.67

要更改输出,您可以使用 转置表格t()。为此,无需使用as.table,您可以直接转置 的结果tapply

转置函数[1,]在输出中创建一个行名。要删除它,您可以使用include.rownames=FALSE。此选项是的参数print.xtable不是本身xtable。因此,您需要print在代码中明确使用该函数。

R代码:

p2 <- round(tapply(breaks, list(tension), mean), digits=2)
p2trans <- t(p2)
p2tab <- xtable(p2trans)
print(p2tab,include.rownames=FALSE)

完整 MWE:

\documentclass{article}
\begin{document}
<<echo=FALSE,results='asis'>>=
library(xtable)
attach(warpbreaks)
p2 <- round(tapply(breaks, list(tension), mean), digits=2)
p2trans <- t(p2)
p2tab <- xtable(p2trans)
print(p2tab,include.rownames=FALSE)
@
\end{document}

结果:

在此处输入图片描述

相关内容