1 #LyX 2.1 created this file. For more info see http://www.lyx.org/
7 %% maxwidth is the original width if it's less than linewidth
8 %% otherwise use linewidth (to make sure the graphics do not exceed the margin)
10 \ifdim\Gin@nat@width>\linewidth
18 \use_default_options true
22 \maintain_unincluded_children false
24 \language_package none
25 \inputencoding utf8-platex
31 \font_default_family default
32 \use_non_tex_fonts false
38 \default_output_format pdf
40 \bibtex_command default
41 \index_command default
42 \paperfontsize default
47 \use_package amsmath 1
48 \use_package amssymb 1
51 \use_package mathdots 1
52 \use_package mathtools 0
54 \use_package stackrel 0
55 \use_package stmaryrd 0
56 \use_package undertilde 0
58 \cite_engine_type default
62 \paperorientation portrait
76 \paragraph_separation indent
77 \paragraph_indentation default
78 \quotes_language english
81 \paperpagestyle default
82 \tracking_changes false
91 \begin_layout Standard
95 \begin_layout Plain Layout
99 SweaveOpts{prefix=TRUE,prefix.string=sweave-prefix,keep.source=FALSE}
107 \begin_layout Standard
111 \begin_layout Plain Layout
115 maxwidth はプリアンブル中で定義されています。文書設定をご覧ください。
118 \begin_layout Plain Layout
141 \begin_layout Plain Layout
143 \begin_inset CommandInset href
145 name "xie@yihui.name"
146 target "xie@yihui.name"
160 \begin_layout Plain Layout
173 \begin_layout Plain Layout
185 \begin_layout Standard
186 Sweaveは、文芸的プログラミングの考えに従った、動的なレポート生成するための、R言語(
187 \begin_inset Flex URL
190 \begin_layout Plain Layout
192 http://www.r-project.org
197 )ツールです。Rコードは、LaTeX文書の中で混用することができ、文書がコンパイルされるときにRで実行されます。結果は、TeX出力内に書きこまれます。
200 \begin_layout Standard
205 モジュールを使えば、どの文書クラスでもSweaveをそのまま使うことができます。
211 文書\SpecialChar \menuseparator
212 設定\SpecialChar \menuseparator
215 を使用します。この説明書では、Sweaveでよく使われる機能をいくつか紹介し、本モジュールがどう動作するかを説明します。この説明書のPDF版は、
216 \begin_inset Flex URL
219 \begin_layout Plain Layout
221 https://github.com/downloads/yihui/lyx/sweave.pdf
229 \begin_layout Section
233 \begin_layout Standard
242 に依存しますので、このファイルが、システムの
246 変数に含まれるパスになくてはなりません。これは、LinuxやMac OSユーザーには大した問題とならないでしょうが、Windowsユーザーには混乱を招くかもしれ
251 が何かわからない場合には、R言語のリポジトリ
252 \begin_inset Flex URL
255 \begin_layout Plain Layout
257 https://github.com/yihui/lyx
266 を使って、パスを自動的に変更するか(推奨はできません。何にせよ
272 ツール\SpecialChar \menuseparator
273 設定\SpecialChar \menuseparator
274 パス\SpecialChar \menuseparator
277 からRのバイナリパスを追加することができます(推奨)。後者の場合、大抵
289 のような形をしており、R内で下記のようにして確認することができます。
292 \begin_layout Standard
296 \begin_layout Plain Layout
298 <<where-is-R-bin,eval=FALSE>>=
301 \begin_layout Plain Layout
306 \begin_layout Plain Layout
316 \begin_layout Standard
319 ツール\SpecialChar \menuseparator
322 を使って、LyXの再設定を行う必要があります。
334 モジュールを使うことはできません。Sweaveの更新は続いていますので、最新版のRを使用することをお勧めします。Rに同梱され、このパス下にある(CTANにはあり
339 によって、下記のように依存関係が追加されます。
342 \begin_layout Standard
346 \begin_layout Plain Layout
348 <<sweave-sty,eval=FALSE>>=
351 \begin_layout Plain Layout
353 file.path(R.home('share'), 'texmf', 'tex', 'latex')
356 \begin_layout Plain Layout
366 \begin_layout Standard
367 MikTeXユーザーは、MikTeXの設定で、MikTeXのルートディレクトリ一覧にtexmfディレクトリも追加したほうが良いかもしれません。また、
387 を検出できないときは、直接Rからコピーしますので、このスタイルファイルがどこにあるかわからない場合でも、Sweaveモジュールは動作します。
390 \begin_layout Section
394 \begin_layout Standard
395 Sweave文書を書く前に、Sweaveオプションを設定しましょう。Sweaveの設定コマンドは
403 挿入\SpecialChar \menuseparator
404 任意設定差込枠\SpecialChar \menuseparator
409 挿入\SpecialChar \menuseparator
412 )ことで挿入することができます。例えば、文頭で大域オプション
416 を設定して、すべてのRコードを抑制することもできます(既定では、Rコードとその出力は、両方ともLaTeX文書中に表示されます)。
419 \begin_layout Standard
420 LyXでRコードを書くには、まずレイアウト様式一覧(ツールバーの左上端のドロップリスト)から、
424 環境に変更するか、あるいは、単にTeXコード環境を開いて、Sweaveのコード組を書き込んでください。後者の方法の方が安定していますので、そちらをお勧めします。
427 \begin_layout Standard
436 のようなRオプションもSweaveの出力に便利です。前者のオプションは、出力の幅を調整するものであり、後者は引用符に関してよく起こる問題を回避することができます
437 。詳細については、Rに添付のSweave取扱説明書をお読みください。
440 \begin_layout Standard
444 \begin_layout Plain Layout
446 <<setup, keep.source=TRUE>>=
449 \begin_layout Plain Layout
451 ## オプション「digits」は桁数(の概数)を設定できます
454 \begin_layout Plain Layout
456 options(width = 70, useFancyQuotes = FALSE, digits = 4)
459 \begin_layout Plain Layout
464 \begin_layout Plain Layout
466 <<sweave-manual, eval=FALSE, keep.source=TRUE>>=
469 \begin_layout Plain Layout
471 ## Sweaveのvignetteを見る (要 R >= 2.13.0)
474 \begin_layout Plain Layout
476 vignette("Sweave", package = "utils")
479 \begin_layout Plain Layout
489 \begin_layout Standard
490 下記は、どのSエンジンでも動作する単純な例です。
493 \begin_layout Standard
497 \begin_layout Plain Layout
499 <<print-integers, keep.source=TRUE>>=
502 \begin_layout Plain Layout
507 \begin_layout Plain Layout
512 \begin_layout Plain Layout
517 \begin_layout Plain Layout
519 <<hide-results, results=hide>>=
522 \begin_layout Plain Layout
524 ## results=hide を設定して意図的に出力を隠す
527 \begin_layout Plain Layout
532 \begin_layout Plain Layout
542 \begin_layout Standard
543 単純な計算機をエミュレートすることもできます。
546 \begin_layout Standard
550 \begin_layout Plain Layout
555 \begin_layout Plain Layout
560 \begin_layout Plain Layout
565 \begin_layout Plain Layout
575 \begin_layout Standard
576 今度は、ガウシアンデータを見てみましょう。
579 \begin_layout Standard
583 \begin_layout Plain Layout
588 \begin_layout Plain Layout
590 set.seed(123) # 再現可能性のため
593 \begin_layout Plain Layout
598 \begin_layout Plain Layout
603 \begin_layout Plain Layout
608 \begin_layout Plain Layout
618 \begin_layout Standard
619 数値を標準テキストに簡単に統合させることができます。これは、
625 コマンドによって行われ、LyX中の対応するメニューは
627 挿入\SpecialChar \menuseparator
628 任意設定差込枠\SpecialChar \menuseparator
631 ですが、TeXコードを使うこともできます。例えば、ベクトル
636 \begin_inset Flex S/R expression
639 \begin_layout Plain Layout
651 \begin_inset Formula $p$
655 \begin_inset Flex S/R expression
658 \begin_layout Plain Layout
660 format.pval(t1$p.value)
669 のようなコマンドを使うことによって丸めることもできます。
672 \begin_layout Standard
703 \begin_layout Standard
707 \begin_layout Plain Layout
712 \begin_layout Plain Layout
717 \begin_layout Plain Layout
727 \begin_layout Standard
728 \begin_inset Float table
733 \begin_layout Plain Layout
734 \begin_inset Caption Standard
736 \begin_layout Plain Layout
742 \begin_inset CommandInset label
744 name "tab:xtable-demo"
756 \begin_layout Plain Layout
761 \begin_layout Plain Layout
765 \begin_layout Plain Layout
767 <<xtable-demo,results=tex,echo=FALSE>>=
770 \begin_layout Plain Layout
772 if (require('xtable')) {
775 \begin_layout Plain Layout
777 print(xtable(sapply(iris[,-5], quantile)), floating=FALSE)
780 \begin_layout Plain Layout
782 } else cat('the xtable package is not available! please install.packages("xtable"
786 \begin_layout Plain Layout
801 \begin_layout Standard
802 通常、人々はこのような「生の」出力を好みませんので、これらのごちゃごちゃした数字を、
806 パッケージを使って綺麗にしてやるといいでしょう。表
807 \begin_inset CommandInset ref
809 reference "tab:xtable-demo"
817 パッケージの使い方を示すための例です。コード組のオプション
825 )で包まれるのではなく、生のLaTeXコードとして書き出されるように保証するためのものです。
828 \begin_layout Standard
830 \begin_inset CommandInset ref
832 reference "fig:iris-pairs"
837 \begin_inset CommandInset ref
839 reference "fig:iris-boxplots"
843 は、Sweaveを使って画像を生成する簡単な例です。
846 \begin_layout Standard
847 \begin_inset Float figure
852 \begin_layout Plain Layout
854 \begin_inset Note Note
857 \begin_layout Plain Layout
858 epsとpdfの両方をtrueにして、latexとpdflatexの両方を動作するようにすることができます。実際には、おそらく一つを選ぶだけでよいでしょう。
867 \begin_layout Plain Layout
869 <<iris-pairs,fig=TRUE,width=4.5,height=4.5,eps=TRUE,pdf=TRUE>>=
872 \begin_layout Plain Layout
874 pairs(iris, col = iris$Species)
877 \begin_layout Plain Layout
887 \begin_layout Plain Layout
888 \begin_inset Caption Standard
890 \begin_layout Plain Layout
896 \begin_inset CommandInset label
898 name "fig:iris-pairs"
915 \begin_layout Standard
916 \begin_inset Float figure
921 \begin_layout Plain Layout
926 \begin_layout Plain Layout
928 <<iris-boxplots,fig=TRUE,width=7,height=2,keep.source=F,eps=T,pdf=T>>=
931 \begin_layout Plain Layout
933 par(mar=c(4,5,.1,.3), las=1)
936 \begin_layout Plain Layout
938 boxplot(Sepal.Length~Species,data=iris,horizontal=TRUE,xlab='Sepal.Length')
941 \begin_layout Plain Layout
951 \begin_layout Plain Layout
952 \begin_inset Caption Standard
954 \begin_layout Plain Layout
955 種でグループ化された萼片の長さのボックスプロット
956 \begin_inset CommandInset label
958 name "fig:iris-boxplots"
975 \begin_layout Standard
976 Sweave文書中のRコードは、単一のRスクリプトとして書きだすことができますが、これは
983 \begin_layout Section
991 \begin_layout Standard
996 モジュールは、LyX文書が、Rを使った文芸的プログラミングのコンポーネントを含んでいることを宣言しますので、LyXは、そのような文書を取り扱う特定の変換子を使っ
997 て処理します(取扱説明書カスタマイズ篇参照)。
1013 が本体になっています。このスクリプトは、LyXから
1017 文書を受け取り、これをTeX文書に変換するためにSweaveを呼び出します。その後の作業は、LyXが面倒を見ます。
1020 \begin_layout Standard
1025 形式からLaTeXへの変換子は、下記のコマンド行でRを呼び出します。
1028 \begin_layout Standard
1032 \begin_layout Plain Layout
1039 \begin_layout Plain Layout
1041 Rscript --no-save --no-restore $$s/scripts/lyxsweave.R $$p$$i $$p$$o $$e
1045 \begin_layout Plain Layout
1057 \begin_layout Standard
1064 ヘルプ\SpecialChar \menuseparator
1067 メニューに記載があります。他にRに渡すことのできるオプションは、Rスクリプト中で説明されており、また、LyX取扱説明書カスタマイズ篇には、
1083 についての詳しい説明があります。一般ユーザーは、これらの意味について詳しく知る必要はありませんが、ここでは、Rコードにまつわる若干の問題について説明しておく必要
1087 \begin_layout Enumerate
1088 LyX文書のエンコーディングを表す文字列は、Rにコマンドラインオプションとして渡されます。取り得る値は、
1103 \begin_layout Enumerate
1104 Sweave文書内のRコード組は、LyX文書のあるディレクトリで実行されます(自信のない場合は、現在の作業ディレクトリがどこかを見るために、コード組に
1108 を置いてください)。この場合、データファイルは同じディレクトリ下に置くことができ、再現可能性を保証するために、R内部では相対パスを使用してください。すなわち、他
1109 のシステムでは存在しないかもしれない、ハードコードのパスを書く必要はありません。
1112 \begin_layout Enumerate
1117 を検出できないと、このRスクリプトが自動的に
1121 を一時ディレクトリにコピーし、そこでLaTeXコンパイルを実行します。
1124 \begin_layout Enumerate
1125 Sweaveは、既定でRnwファイルのファイル名を、画像出力の接頭辞文字列として使用します。既知の問題の1つ(
1126 \begin_inset CommandInset href
1129 target "http://www.lyx.org/trac/ticket/7551"
1133 )として、ファイル名(拡張子を除く)にピリオドが含まれている場合、LaTeXがそのファイルを
1139 で処理する際に失敗しうるということが知られています。したがって、接頭辞の既定値は、すべてのピリオドを「-」で置換したファイル名にしてあります。この問題は、Swe
1140 aveで直接的に解決することもができます。Sweaveオプションの
1144 を、ピリオドを含まない文字列に設定すると、このオプションが既定値を上書きします。
1147 \begin_layout Standard
1152 オプションが設定されています。このオプションは、Sweaveが下記の2つのパッケージを読み込んでしまうのを防ぎます。
1155 \begin_layout Standard
1159 \begin_layout Plain Layout
1166 \begin_layout Plain Layout
1170 RequirePackage[T1]{fontenc}
1173 \begin_layout Plain Layout
1180 \begin_layout Plain Layout
1192 \begin_layout Standard
1193 LyXは、既定でフォントエンコーディングを取り扱うことができるので、Sweaveにこれをやってもらう必要はないのです(その上、これはパッケージオプションの衝突を
1194 もたらす可能性があります)。一方、ユーザーは、必要ならばプリアンブルで
1198 パッケージを手動で読み込ませることができます。
1201 \begin_layout Section
1205 \begin_layout Standard
1206 LyX 2.0以降、コンパイル中の詳細な情報を、
1208 表示\SpecialChar \menuseparator
1211 で見ることができるようになりました。これは、問題の解決に非常に役に立ちます。Rの処理は、メッセージパネルに表示され、エラーが発生した場合には、どのコード組がおか
1212 しいのか知ることができます。例えば、この文書をコンパイルする時、以下のようなメッセージを見ることができるでしょう。
1215 \begin_layout Standard
1219 \begin_layout Plain Layout
1226 \begin_layout Plain Layout
1228 17:58:47.868: Processing code chunks with options ...
1231 \begin_layout Plain Layout
1233 17:58:47.885: 1 : echo keep.source term verbatim (label=setup)
1236 \begin_layout Plain Layout
1238 17:58:47.889: 2 : echo keep.source (label=sweave-manual)
1241 \begin_layout Plain Layout
1243 17:58:47.908: 3 : echo keep.source term verbatim (label=print-integers)
1246 \begin_layout Plain Layout
1251 \begin_layout Plain Layout
1253 17:58:47.941: Loading required package: xtable
1256 \begin_layout Plain Layout
1258 17:58:47.976: 9 : echo term verbatim pdf (label=iris-pairs)
1261 \begin_layout Plain Layout
1266 \begin_layout Plain Layout
1268 17:58:48.116: You can now run (pdf)latex on 'sweave.tex'
1271 \begin_layout Plain Layout
1283 \begin_layout Standard
1288 の後の文字列が、コード組のラベルを示します。コード組のどれかがRでエラーを起こせば、即座にここにエラーメッセージを見ることができます。
1291 \begin_layout Standard
1292 もうひとつ知られている問題点は、LyX中でコード組段落の配置に(
1296 を使用して)手を加えた場合、LyXは、改行しないでコード組の前に
1302 のようなマクロを書き加えてしまうことがあるので、Sweaveコード組がエラーを起こす場合があるという事です。この場合のコード組は、下記のようになってしまいます。
1305 \begin_layout Standard
1309 \begin_layout Plain Layout
1316 \begin_layout Plain Layout
1320 centering{}<<xtable-demo,results=tex,echo=FALSE>>=
1323 \begin_layout Plain Layout
1335 \begin_layout Standard
1340 は行頭すぐに置かれなくてはならないため、これは正しいSweaveコードではありません。したがって、コード組段落の配置に手を加える場合には、
1342 表示\SpecialChar \menuseparator
1349 が改行後に現れるようにすることをお勧めします。表
1350 \begin_inset CommandInset ref
1352 reference "tab:xtable-demo"
1356 のコード組に手動で空行が追加されているのは、このためです。
1359 \begin_layout Section
1363 \begin_layout Standard
1365 \begin_inset Flex URL
1368 \begin_layout Plain Layout
1370 http://www.stat.uni-muenchen.de/~leisch/Sweave/
1375 にあります。 The CRAN task view on 「Reproducible Research」にあるCRANタスクビューには、便利と思われるSweav
1377 \begin_inset Flex URL
1380 \begin_layout Plain Layout
1382 http://cran.r-project.org/web/views/ReproducibleResearch.html
1387 をご覧ください。LyXとSweaveに関する質問は、LyXメーリングリスト(
1388 \begin_inset Flex URL
1391 \begin_layout Plain Layout
1393 http://www.lyx.org/MailingLists
1398 )に投稿してください。さらに多くのLyXの用例は、
1399 \begin_inset Flex URL
1402 \begin_layout Plain Layout
1404 https://github.com/yihui/lyx
1412 \begin_layout Section
1416 \begin_layout Subsection
1417 Sweaveをbeamerで使うにはどうすればよいでしょうか
1420 \begin_layout Standard
1421 beamerのスライドでSweaveを使うと、LyXではLaTeXエラーが発生します。その原因は、生のRコードを含むbeamerフレームのせいです。これを解決す
1422 るには、通常のフレームの代わりに脆弱フレームを使うか、フレーム表題に
1424 挿入\SpecialChar \menuseparator
1434 \begin_layout Subsection
1435 Rnw文書をコンパイルするためのRスクリプトを書いてもいいですか
1438 \begin_layout Standard
1443 /scripts/lyxsweave.R
1445 がどのように動作するかを理解する必要がありますので、できればそのRソースコードを読むことをお勧めします(特に、Rがパスをどのように取得し、Rnw文書を取り扱うの
1450 をどのように使っているかを見てください)。その後、カスタマイズした
1458 (ヘルプ\SpecialChar \menuseparator
1463 ディレクトリ下に置いてください。LyXは自身の
1475 がユーザーディレクトリで検出されれば、それが使用されます。LyXライブラリディレクトリ下にあるスクリプトを直接ハックしてしまうと、LyX更新時に修正したスクリプ
1476 トが上書きされてしまいます(ユーザーディレクトリは影響を受けません)ので、お勧めしません。
1479 \begin_layout Standard
1480 なお、Rの公式Sweaveの他に、Sweaveの代替ツールである
1484 パッケージもサポートされており、対応するモジュール名は