【问题标题】:Transpose a data.frame from R to Latex without "rownumber" (and booktabs)将 data.frame 从 R 转置为没有“rownumber”(和 booktabs)的 Latex
【发布时间】:2014-01-25 13:14:57
【问题描述】:

我想在 R 中转置(即向量作为列)一个 data.frame 并将其导出到没有行号但有列的 Latex。我想要这样的输出:

但是

df <- data.frame(qwertz=c("a","b","c","d","e","f"), asdfg=c("a","b"))

    qwertz asdfg
1      a     a
2      b     b
3      c     a
4      d     b
5      e     a
6      f     b

当我使用 xtable 和 booktabs 时

library(xtable)
print(xtable(t(df)), include.colnames=FALSE, booktabs=TRUE)

乳胶输出是

print(xtable(t(df)), include.colnames=FALSE, booktabs=TRUE)
% latex table generated in R 3.0.2 by xtable 1.7-1 package
\begin{table}[ht]
    \centering
    \begin{tabular}{rllllll}
      \toprule
      \midrule
        qwertz & a & b & c & d & e & f \\ 
         asdfg & a & b & a & b & a & b \\ 
      \bottomrule
    \end{tabular}
\end{table}

问题:我怎样才能在两行之间直接使用\midrule

我也尝试使用来自ENmisctoLatex() 和来自HmiscLatex(),并且在阅读了这两个问题之后:

https://tex.stackexchange.com/q/25575/36408

https://tex.stackexchange.com/q/75793/36408

【问题讨论】:

  • 你能编辑xtable的输出吗?
  • xtable() 来自包xtablehere

标签: r latex transpose


【解决方案1】:

你可以使用add.to.row参数

library(xtable)
df <- data.frame(qwertz=c("a","b","c","d","e","f"), asdfg=c("a","b"))
df <- t(df)
n <- nrow(df)

print(xtable(df), hline.after = NULL,
      include.colnames = FALSE,
      add.to.row = list(pos = list(0, 1, n),
      command = c('\\toprule[1.5pt]\n', '\\midrule[1pt]\n', '\\bottomrule[1.5pt]\n')))
## % latex table generated in R 3.0.2 by xtable 1.7-1 package
## % Sat Jan 25 14:32:34 2014
## \begin{table}[ht]
## \centering
## \begin{tabular}{rllllll}
##   \toprule[1.5pt]
##  qwertz & a & b & c & d & e & f \\ 
##    \midrule[1pt]
## asdfg & a & b & a & b & a & b \\ 
##    \bottomrule[1.5pt]
## \end{tabular}
## \end{table}

要在longtable LaTeX 环境中使用它,你可以这样做

print(xtable(df),
      tabular.environment = "longtable",
      floating = FALSE,
      hline.after = NULL,
      include.colnames = FALSE,
      booktabs = TRUE,
      add.to.row = list(pos = list(0, 1, n),
      command = c('\\toprule[1.5pt]\n', '\\midrule[1pt]\n', '\\bottomrule[1.5pt]\n')))
## % latex table generated in R 3.0.2 by xtable 1.7-1 package
## % Mon Jan 27 13:00:01 2014
## \begin{longtable}{rllllll}
##    \toprule[1.5pt]
## qwertz & a & b & c & d & e & f \\ 
##    \midrule[1pt]
## asdfg & a & b & a & b & a & b \\ 
##    \bottomrule[1.5pt]
## \end{longtable}

【讨论】:

  • 如果您使用 tabular.environment='longtable' 作为 print() 函数的参数,您知道如何删除末尾的 \hline 吗?使用这个参数,它产生 \bottomrule[1,5pt] AND \hline。我把\bottomrule的粗细改成了[0.3em],效果很好,但是代码看起来不太好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多