修改填充了 R 数据的 Table-1 的布局

修改填充了 R 数据的 Table-1 的布局

我想填补自动将 R 中的数据放入 TeX 文档的表中。斯维夫针织品这里有很多可能性。请随意添加更多。(我知道 Sweave 和 Knitr 是 R 包,但我的问题重点是布局 - 是什么让它在我看来成为一个 TeX 问题。)

如何在 TeX 表中使用 R 数据并修改表格布局?这个问题不是关于如何制作漂亮的表格。而是关于制作确切地我在这里展示的表格。

在此处输入图片描述

针织或编织

这是example.Rnw文件。表格是我想要进行哪种布局修改的示例。在代码末尾,您会看到示例 R 数据。该文件可以通过Sweave()或使用knit()

\documentclass{article}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{\columnwidth}{XX}
    \hline\hline
    \multicolumn{2}{X}{Should look like this.}\\
    \hline\hline
    \textbf{Gänge}&\\
    \hspace*{5ex}3&15\\
    \hspace*{5ex}4&12\\
    \hspace*{5ex}5&5\\
    \hline
    \textbf{Zylinder}&\\
    \hspace*{5ex}4&11\\
    \hspace*{5ex}6&7\\
    \hspace*{5ex}8&14\\
    \hline\hline
\end{tabularx}
<<>>=
require(xtable)
table(mtcars$gear)

table(mtcars$cyl)
@
\end{document}

另一种方法

我在 R 中发现的另一种方法是。

df <- data.frame(table(mtcars$cyl))
capture.output(
  latex(df, file='')
)

这将生成该 TeX 代码。

 [1] "%latex.default(data.frame(table(mtcars$cyl)), file = \"\")%"                                        
 [2] "\\begin{table}[!tbp]"                                                      
 [3] "\\begin{center}"                                            
 [4] "\\begin{tabular}{llr}"                                                       
 [5] "\\hline\\hline"                                    
 [6] "\\multicolumn{1}{l}{data.frame}&\\multicolumn{1}{c}{Var1}&\\multicolumn{1}{c}{Freq}\\tabularnewline"
 [7] "\\hline"                          
 [8] "1&4&$11$\\tabularnewline"                
 [9] "2&6&$ 7$\\tabularnewline"                                                 
[10] "3&8&$14$\\tabularnewline"                                 
[11] "\\hline"                                         
[12] "\\end{tabular}\\end{center}"            
[13] "\\end{table}"   

当将该字符串存储在 R 对象中时,可以对其进行修改并用于以后的输出。但这听起来像是一种低效的解决方法,而不是解决方案。而且我仍然不知道如何使用该方法实现我的示例表。

答案1

在我看来这不是一个解决方案但它确实有效。

我将 R 一侧的 tex-code 片段拼凑在一起形成一个字符串列表,然后将其放出来。

此 Rnw 文件

\documentclass{article}
\usepackage{tabularx}
\begin{document}
<<results='asis', echo=FALSE>>=
funcTabCharacteristics <- function (h, t) {
    rc <- c()

    rc <- c(rc, paste('\\textbf{', h, '}&\\tabularnewline', sep=''))
    for (n in names(t)) {
        rc <- c(rc, paste('\\hspace*{5ex}', n, '&', t[n], '\\tabularnewline', sep=''))

    }

    return (rc)
}

# lines of tex-code
tex <- c()
# table head
tex <- c(tex, '\\begin{tabularx}{\\columnwidth}{XX}')
tex <- c(tex, '\\hline\\hline\\multicolumn{2}{X}{My Table-1}\\tabularnewline')
tex <- c(tex, '\\hline\\hline')
# gear
tex <- c(tex, funcTabCharacteristics('Gänge', table(mtcars$gear)))
tex <- c(tex, '\\hline')
# cyl
tex <- c(tex, funcTabCharacteristics('Zylinder', table(mtcars$cyl)))
tex <- c(tex, '\\hline\\hline')
# table foot
tex <- c(tex, '\\end{tabularx}')
# output the texcode
cat(tex, sep='\n')
@
\end{document}

难道对于人类来说就没有一个真正优雅的解决方案吗?

相关内容