转换一个表,从R导出到Latex,使用来自Hmisc包的latex()

时间:2016-06-22 04:12:11

标签: r latex hmisc

我正在尝试将输出从R写入Latex。我希望从R:

获得格式良好的表格

raw

当我使用Hmisc包中的latex()函数时,我得到了这个:

enter image description here

如何转换表格,使其成为2x6而不是6x2?我知道在latex()函数中必须存在一些参数,但我无法弄明白。

2 个答案:

答案 0 :(得分:2)

Summary返回一个奇怪的字符串,在我看来简直就是丑陋。这是在表格中获得类似摘要输出的替代方法:

summ <- function(x){
    tmp<-quantile(x, c(0,.25,.5,.75,1))
    names(tmp)<-c("Min", "1st Qu.", "Median", "3rd Qu.", "Max")
    return(tmp)}

使用函数返回更灵活的data.frame:

t(sapply(swiss, summ) )

                   Min 1st Qu. Median 3rd Qu.   Max
Fertility        35.00  64.700  70.40  78.450  92.5
Agriculture       1.20  35.900  54.10  67.650  89.7
Examination       3.00  12.000  16.00  22.000  37.0
Education         1.00   6.000   8.00  12.000  53.0
Catholic          2.15   5.195  15.14  93.125 100.0
Infant.Mortality 10.80  18.150  20.00  21.700  26.6

使用上面的@pachamaltese答案,最终的汇总表应该没有表格中的不必要的Min. :

答案 1 :(得分:1)

你应该提供一个MWE:)

我做的是这个

setwd("/myfolder")    
library(Hmisc)
table <- summary(swiss)
table_transpose <- t(table)

latex(table)
latex(table_transpose)

“t”表示转置,它适用于矩阵或表格

运行latex()后,R保存了两个我必须粘贴到具有合适结构的文件中的.tex文件,否则将无法编译。

这是最终的.tex

\documentclass[12pt,letterpaper,landscape]{article}
\leftmargin=0.25in
\oddsidemargin=0.25in
\textwidth=6.0in
\topmargin=-0.9in
\textheight=9.25in
\usepackage[margin=1in]{geometry}

\begin{document}

\begin{table}[!tbp]
\begin{center}
\begin{tabular}{lllllll}
\hline\hline
\multicolumn{1}{l}{table}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{}\tabularnewline
\hline
  Fertility&Min.   :35.00  &1st Qu.:64.70  &Median :70.40  &Mean   :70.14  &3rd Qu.:78.45  &Max.   :92.50  \tabularnewline
 Agriculture&Min.   : 1.20  &1st Qu.:35.90  &Median :54.10  &Mean   :50.66  &3rd Qu.:67.65  &Max.   :89.70  \tabularnewline
 Examination&Min.   : 3.00  &1st Qu.:12.00  &Median :16.00  &Mean   :16.49  &3rd Qu.:22.00  &Max.   :37.00  \tabularnewline
  Education&Min.   : 1.00  &1st Qu.: 6.00  &Median : 8.00  &Mean   :10.98  &3rd Qu.:12.00  &Max.   :53.00  \tabularnewline
   Catholic&Min.   :  2.150  &1st Qu.:  5.195  &Median : 15.140  &Mean   : 41.144  &3rd Qu.: 93.125  &Max.   :100.000  \tabularnewline
Infant.Mortality&Min.   :10.80  &1st Qu.:18.15  &Median :20.00  &Mean   :19.94  &3rd Qu.:21.70  &Max.   :26.60  \tabularnewline
\hline
\end{tabular}\end{center}
\end{table}

\begin{table}[!tbp]
\begin{center}
\begin{tabular}{lllllll}
\hline\hline
\multicolumn{1}{l}{summary}&\multicolumn{1}{c}{  Fertility}&\multicolumn{1}{c}{ Agriculture}&\multicolumn{1}{c}{ Examination}&\multicolumn{1}{c}{  Education}&\multicolumn{1}{c}{   Catholic}&\multicolumn{1}{c}{Infant.Mortality}\tabularnewline
\hline
&Min.   :35.00  &Min.   : 1.20  &Min.   : 3.00  &Min.   : 1.00  &Min.   :  2.150  &Min.   :10.80  \tabularnewline
&1st Qu.:64.70  &1st Qu.:35.90  &1st Qu.:12.00  &1st Qu.: 6.00  &1st Qu.:  5.195  &1st Qu.:18.15  \tabularnewline
&Median :70.40  &Median :54.10  &Median :16.00  &Median : 8.00  &Median : 15.140  &Median :20.00  \tabularnewline
&Mean   :70.14  &Mean   :50.66  &Mean   :16.49  &Mean   :10.98  &Mean   : 41.144  &Mean   :19.94  \tabularnewline
&3rd Qu.:78.45  &3rd Qu.:67.65  &3rd Qu.:22.00  &3rd Qu.:12.00  &3rd Qu.: 93.125  &3rd Qu.:21.70  \tabularnewline
&Max.   :92.50  &Max.   :89.70  &Max.   :37.00  &Max.   :53.00  &Max.   :100.000  &Max.   :26.60  \tabularnewline
\hline
\end{tabular}\end{center}
\end{table}

\end{document}

这是需要一些化妆的结果

enter image description here

点击此处查看xtable Tools for making latex tables in R

等更多工具