要素の数があらかじめ定義されていないSweaveからLaTeX文書を生成することは可能ですか?つまり、データフレームの各行にテーブルを作成する必要があるとします。ドキュメント内のテーブルの数は、データフレームの行数によって異なります。Dynamic Sweave文書
つまり、for
ループ内にLaTeX要素を生成します。各行について、Sweaveはテーブルを作成します。
ページやその他の要素にも同じことが適用されます。これは可能ですか?
要素の数があらかじめ定義されていないSweaveからLaTeX文書を生成することは可能ですか?つまり、データフレームの各行にテーブルを作成する必要があるとします。ドキュメント内のテーブルの数は、データフレームの行数によって異なります。Dynamic Sweave文書
つまり、for
ループ内にLaTeX要素を生成します。各行について、Sweaveはテーブルを作成します。
ページやその他の要素にも同じことが適用されます。これは可能ですか?
は、このヘルプを行います。
\documentclass[a4paper,12pt]{article}
\usepackage{Sweave}
\begin{document}
<<echo=FALSE>>=
library(xtable)
df <- structure(list(ID = 2:6, home_pc = structure(c(2L, 6L, 1L, 3L,
5L), .Label = c("BY5 8IB", "CB4 2DT", "DH4 6PB", "KN4 5GH", "MP9 7GH",
"NE5 7TH", "VB2 4RF"), class = "factor"), start_pc = structure(c(4L,
3L, 4L, 2L, 1L), .Label = c("BV6 5PB", "CB3 5TH", "FC5 7YH",
"Home", "NA"), class = "factor"), end_pc = structure(c(1L, 3L,
3L, 3L, 2L), .Label = c("CB5 4FG", "GH6 8HG", "Home", "NA"), class = "factor")), .Names = c("ID",
"home_pc", "start_pc", "end_pc"), row.names = 2:6, class = "data.frame")
count = 1
end = 3
@
<<fun,echo=FALSE,eval=FALSE>>=
print(xtable(df))
@
<<echo=FALSE,results=tex>>=
for(i in 1:end)
{
print(xtable(df))
i <- i + 1
}
cat("\\newpage")
@
<<echo=FALSE,results=tex>>=
if(count < end)
<<fun>>
count = count + 1
cat("\\newpage")
@
<<echo=FALSE,results=tex>>=
if(count < end)
<<fun>>
count = count + 1
cat("\\newpage")
@
<<echo=FALSE,results=tex>>=
if(count < end)
<<fun>>
count = count + 1
cat("\\newpage")
@
\end{document}
これは正しい軌道にある場合は、より詳細に入るもラクラク!
@Ramnathとしてmtcarsを使って編集したもの(手作りのものよりもはるかに優れています)は[こちら](ftp://godesberg.homelinux.net/test.Rnw)です。私は、明らかに長い道のりに付随する柔軟性を実証しようと試みました。 – vaettchen
これを行うには、これより短い方法があります。私はR
にmtcars
データセットを使用しており、シリンダー数でテーブルを作成する方法を説明します。 Sweave
またはknitr
(ブロック上の新しい子供)を使用してこのドキュメントを処理できます。どのように動作するか教えてください。
\documentclass{article}
%\SweaveOpts{echo = F}
\begin{document}
<<load-libraries>>=
suppressMessages(require(plyr))
suppressMessages(require(xtable))
@
<<gen-tables, results = tex>>=
d_ply(mtcars, .(cyl), xtable, .print = TRUE)
@
\end{document}
brew'は、[このブログ](http://learnr.wordpress.com/2009/09/09/brew-creating-repetitive-reports/)に記述されている '使用して素敵なチュートリアル – baptiste
はい、私は私の場合は、brewを使ってtexファイルを生成するのが最善の方法だと考えています。こうすることで、for、if、その他の制御構造を使ってtexファイルを動的に生成することができます。 –