Примените xtable() к списку таблиц и создайте PDF, используя knitr в R-studio
Я хочу преобразовать список таблиц в Latex с помощью xtable() и создать PDF-файл, используя Knitr в R-studio.
Я пытался использовать llply() в списке, но он не работает.
Вот список таблиц:
library(plyr)
library(xtable)
Data <- data.frame(a=rbinom(100,1,0.5), b=rbinom(100,1,0.3), c=rbinom(100,1,0.6))
combos <- combn(ncol(Data),2)
TabelFn <- function(x) {
Table <- addmargins(table(Data[, x[1]], Data[, x[2]]))
return(Table)
}
Table <- alply(.data=combos, .margins=2, .fun=TabelFn, .expand=TRUE)
Table # list of tables
Я попытался запустить llply() на нем:
llply(Table, function(x) {xtable(x)})
И получил этот вывод:
$`1`
% latex table generated in R 2.15.3 by xtable 1.7-1 package
% Sat Apr 13 19:45:40 2013
\begin{table}[ht]
\centering
\begin{tabular}{rrrr}
\hline
& 0 & 1 & Sum \\
\hline
0 & 48.00 & 11.00 & 59.00 \\
1 & 31.00 & 10.00 & 41.00 \\
Sum & 79.00 & 21.00 & 100.00 \\
\hline
\end{tabular}
\end{table}
$`2`
% latex table generated in R 2.15.3 by xtable 1.7-1 package
% Sat Apr 13 19:45:41 2013
\begin{table}[ht]
\centering
\begin{tabular}{rrrr}
\hline
& 0 & 1 & Sum \\
\hline
0 & 27.00 & 32.00 & 59.00 \\
1 & 21.00 & 20.00 & 41.00 \\
Sum & 48.00 & 52.00 & 100.00 \\
\hline
\end{tabular}
\end{table}
$`3`
% latex table generated in R 2.15.3 by xtable 1.7-1 package
% Sat Apr 13 19:45:41 2013
\begin{table}[ht]
\centering
\begin{tabular}{rrrr}
\hline
& 0 & 1 & Sum \\
\hline
0 & 40.00 & 39.00 & 79.00 \\
1 & 8.00 & 13.00 & 21.00 \\
Sum & 48.00 & 52.00 & 100.00 \\
\hline
\end{tabular}
\end{table}
Но латекс не примет это. Я думаю, это из-за списка имен, таких как $1
и $2
и так далее. Этот вывод xtable для списка таблиц объясняет способ сделать это, но я надеялся, что был менее сложный способ сделать это?
1 ответ
Я не решаюсь опубликовать это, потому что это мало что добавляет к связанному вопросу, которым вы поделились...
Просто поменяй llply(...)
в l_ply
и убедитесь, что параметры чанка для xtable
s настроен на что-то вроде <<echo=FALSE, results='asis'>>=
Мне удалось создать файл Rnw со следующим содержимым, который работает просто отлично:
\documentclass{article}
\begin{document}
<<echo=FALSE>>=
library(plyr)
library(xtable)
Data <- data.frame(a=rbinom(100,1,0.5), b=rbinom(100,1,0.3), c=rbinom(100,1,0.6))
combos <- combn(ncol(Data),2)
TabelFn <- function(x) {
Table <- addmargins(table(Data[, x[1]], Data[, x[2]]))
return(Table)
}
Table <- alply(.data=combos, .margins=2, .fun=TabelFn, .expand=TRUE)
@
<<echo=FALSE, results='asis'>>=
l_ply(Table, function(x) { print(xtable(x)) })
@
\end{document}
Несколько замечаний:
$
это специальный символ в LaTeX, поэтому наличие его в вашем выводе создаст проблемыalply
а такжеllply
покажет вывод, но вы не хотите этого, поэтому вы должны использовать_
версии (a_ply
а такжеl_ply
) когда уместно. Из файла справки вl_ply
, Весь вывод отбрасывается. Это полезно для функций, которые вы вызываете исключительно из-за их побочных эффектов, таких как отображение графиков или сохранение результатов.