1 #LyX 2.2 created this file. For more info see http://www.lyx.org/
5 \save_transient_properties true
6 \origin /systemlyxdir/examples/ja/
9 %% maxwidth is the original width if it's less than linewidth
10 %% otherwise use linewidth (to make sure the graphics do not exceed the margin)
12 \ifdim\Gin@nat@width>\linewidth
20 \use_default_options true
24 \maintain_unincluded_children false
26 \language_package none
27 \inputencoding utf8-platex
29 \font_roman "palatino" "default"
30 \font_sans "lmss" "default"
31 \font_typewriter "lmtt" "default"
32 \font_math "auto" "auto"
33 \font_default_family default
34 \use_non_tex_fonts false
37 \font_sf_scale 100 100
38 \font_tt_scale 100 100
40 \default_output_format pdf
42 \bibtex_command default
43 \index_command default
44 \paperfontsize default
49 \use_package amsmath 1
50 \use_package amssymb 1
53 \use_package mathdots 1
54 \use_package mathtools 0
56 \use_package stackrel 0
57 \use_package stmaryrd 0
58 \use_package undertilde 0
60 \cite_engine_type default
64 \paperorientation portrait
78 \paragraph_separation indent
79 \paragraph_indentation default
80 \quotes_language english
83 \paperpagestyle default
84 \tracking_changes false
93 \begin_layout Standard
97 \begin_layout Plain Layout
101 SweaveOpts{prefix=TRUE,prefix.string=sweave-prefix,keep.source=FALSE}
109 \begin_layout Standard
113 \begin_layout Plain Layout
117 maxwidth はプリアンブル中で定義されています。文書設定をご覧ください。
120 \begin_layout Plain Layout
135 \SpecialCharNoPassThru LyX
144 \begin_layout Plain Layout
146 \begin_inset CommandInset href
148 name "xie@yihui.name"
149 target "xie@yihui.name"
163 \begin_layout Plain Layout
176 \begin_layout Plain Layout
188 \begin_layout Standard
189 Sweaveは、文芸的プログラミングの考えに従った、動的なレポート生成するための、R言語(
190 \begin_inset Flex URL
193 \begin_layout Plain Layout
195 http://www.r-project.org
200 )ツールです。Rコードは、\SpecialCharNoPassThru LaTeX
201 文書の中で混用することができ、文書がコンパイルされるときにRで実行されます。結果は、\SpecialCharNoPassThru TeX
205 \begin_layout Standard
206 \SpecialCharNoPassThru LyX
211 モジュールを使えば、どの文書クラスでもSweaveをそのまま使うことができます。
217 文書\SpecialChar menuseparator
218 設定\SpecialChar menuseparator
221 を使用します。この説明書では、Sweaveでよく使われる機能をいくつか紹介し、本モジュールがどう動作するかを説明します。この説明書のPDF版は、
222 \begin_inset Flex URL
225 \begin_layout Plain Layout
227 https://github.com/downloads/yihui/lyx/sweave.pdf
235 \begin_layout Section
239 \begin_layout Standard
248 に依存しますので、このファイルが、システムの
252 変数に含まれるパスになくてはなりません。これは、LinuxやMac OSユーザーには大した問題とならないでしょうが、Windowsユーザーには混乱を招くかもしれ
257 が何かわからない場合には、R言語のリポジトリ
258 \begin_inset Flex URL
261 \begin_layout Plain Layout
263 https://github.com/yihui/lyx
272 を使って、パスを自動的に変更するか(推奨はできません。何にせよ
278 ツール\SpecialChar menuseparator
279 設定\SpecialChar menuseparator
280 パス\SpecialChar menuseparator
283 からRのバイナリパスを追加することができます(推奨)。後者の場合、大抵
295 のような形をしており、R内で下記のようにして確認することができます。
298 \begin_layout Standard
302 \begin_layout Plain Layout
304 <<where-is-R-bin,eval=FALSE>>=
307 \begin_layout Plain Layout
312 \begin_layout Plain Layout
322 \begin_layout Standard
325 ツール\SpecialChar menuseparator
328 を使って、\SpecialCharNoPassThru LyX
341 モジュールを使うことはできません。Sweaveの更新は続いていますので、最新版のRを使用することをお勧めします。Rに同梱され、このパス下にある(CTANにはあり
342 ません)\SpecialCharNoPassThru LaTeX
347 によって、下記のように依存関係が追加されます。
350 \begin_layout Standard
354 \begin_layout Plain Layout
356 <<sweave-sty,eval=FALSE>>=
359 \begin_layout Plain Layout
361 file.path(R.home('share'), 'texmf', 'tex', 'latex')
364 \begin_layout Plain Layout
374 \begin_layout Standard
375 Mik\SpecialCharNoPassThru TeX
376 ユーザーは、Mik\SpecialCharNoPassThru TeX
377 の設定で、Mik\SpecialCharNoPassThru TeX
378 のルートディレクトリ一覧にtexmfディレクトリも追加したほうが良いかもしれません。また、
394 あります。\SpecialCharNoPassThru LyX
399 を検出できないときは、直接Rからコピーしますので、このスタイルファイルがどこにあるかわからない場合でも、Sweaveモジュールは動作します。
402 \begin_layout Section
406 \begin_layout Standard
407 Sweave文書を書く前に、Sweaveオプションを設定しましょう。Sweaveの設定コマンドは
413 ですが、これは、\SpecialCharNoPassThru LyX
416 挿入\SpecialChar menuseparator
417 任意設定差込枠\SpecialChar menuseparator
420 か、\SpecialCharNoPassThru TeX
423 挿入\SpecialChar menuseparator
424 \SpecialCharNoPassThru TeX
427 )ことで挿入することができます。例えば、文頭で大域オプション
431 を設定して、すべてのRコードを抑制することもできます(既定では、Rコードとその出力は、両方とも\SpecialCharNoPassThru LaTeX
435 \begin_layout Standard
436 \SpecialCharNoPassThru LyX
437 でRコードを書くには、まずレイアウト様式一覧(ツールバーの左上端のドロップリスト)から、
441 環境に変更するか、あるいは、単に\SpecialCharNoPassThru TeX
442 コード環境を開いて、Sweaveのコード組を書き込んでください。後者の方法の方が安定していますので、そちらをお勧めします。
445 \begin_layout Standard
454 のようなRオプションもSweaveの出力に便利です。前者のオプションは、出力の幅を調整するものであり、後者は引用符に関してよく起こる問題を回避することができます
455 。詳細については、Rに添付のSweave取扱説明書をお読みください。
458 \begin_layout Standard
462 \begin_layout Plain Layout
464 <<setup, keep.source=TRUE>>=
467 \begin_layout Plain Layout
469 ## オプション「digits」は桁数(の概数)を設定できます
472 \begin_layout Plain Layout
474 options(width = 70, useFancyQuotes = FALSE, digits = 4)
477 \begin_layout Plain Layout
482 \begin_layout Plain Layout
484 <<sweave-manual, eval=FALSE, keep.source=TRUE>>=
487 \begin_layout Plain Layout
489 ## Sweaveのvignetteを見る (要 R >= 2.13.0)
492 \begin_layout Plain Layout
494 vignette("Sweave", package = "utils")
497 \begin_layout Plain Layout
507 \begin_layout Standard
508 下記は、どのSエンジンでも動作する単純な例です。
511 \begin_layout Standard
515 \begin_layout Plain Layout
517 <<print-integers, keep.source=TRUE>>=
520 \begin_layout Plain Layout
525 \begin_layout Plain Layout
530 \begin_layout Plain Layout
535 \begin_layout Plain Layout
537 <<hide-results, results=hide>>=
540 \begin_layout Plain Layout
542 ## results=hide を設定して意図的に出力を隠す
545 \begin_layout Plain Layout
550 \begin_layout Plain Layout
560 \begin_layout Standard
561 単純な計算機をエミュレートすることもできます。
564 \begin_layout Standard
568 \begin_layout Plain Layout
573 \begin_layout Plain Layout
578 \begin_layout Plain Layout
583 \begin_layout Plain Layout
593 \begin_layout Standard
594 今度は、ガウシアンデータを見てみましょう。
597 \begin_layout Standard
601 \begin_layout Plain Layout
606 \begin_layout Plain Layout
608 set.seed(123) # 再現可能性のため
611 \begin_layout Plain Layout
616 \begin_layout Plain Layout
621 \begin_layout Plain Layout
626 \begin_layout Plain Layout
636 \begin_layout Standard
637 数値を標準テキストに簡単に統合させることができます。これは、
643 コマンドによって行われ、\SpecialCharNoPassThru LyX
646 挿入\SpecialChar menuseparator
647 任意設定差込枠\SpecialChar menuseparator
650 ですが、\SpecialCharNoPassThru TeX
651 コードを使うこともできます。例えば、ベクトル
656 \begin_inset Flex S/R expression
659 \begin_layout Plain Layout
671 \begin_inset Formula $p$
675 \begin_inset Flex S/R expression
678 \begin_layout Plain Layout
680 format.pval(t1$p.value)
689 のようなコマンドを使うことによって丸めることもできます。
692 \begin_layout Standard
723 \begin_layout Standard
727 \begin_layout Plain Layout
732 \begin_layout Plain Layout
737 \begin_layout Plain Layout
747 \begin_layout Standard
748 \begin_inset Float table
753 \begin_layout Plain Layout
754 \begin_inset Caption Standard
756 \begin_layout Plain Layout
762 \begin_inset CommandInset label
764 name "tab:xtable-demo"
776 \begin_layout Plain Layout
781 \begin_layout Plain Layout
785 \begin_layout Plain Layout
787 <<xtable-demo,results=tex,echo=FALSE>>=
790 \begin_layout Plain Layout
792 if (require('xtable')) {
795 \begin_layout Plain Layout
797 print(xtable(sapply(iris[,-5], quantile)), floating=FALSE)
800 \begin_layout Plain Layout
802 } else cat('the xtable package is not available! please install.packages("xtable"
806 \begin_layout Plain Layout
821 \begin_layout Standard
822 通常、人々はこのような「生の」出力を好みませんので、これらのごちゃごちゃした数字を、
826 パッケージを使って綺麗にしてやるといいでしょう。表
827 \begin_inset CommandInset ref
829 reference "tab:xtable-demo"
837 パッケージの使い方を示すための例です。コード組のオプション
845 )で包まれるのではなく、生の\SpecialCharNoPassThru LaTeX
846 コードとして書き出されるように保証するためのものです。
849 \begin_layout Standard
851 \begin_inset CommandInset ref
853 reference "fig:iris-pairs"
858 \begin_inset CommandInset ref
860 reference "fig:iris-boxplots"
864 は、Sweaveを使って画像を生成する簡単な例です。
867 \begin_layout Standard
868 \begin_inset Float figure
873 \begin_layout Plain Layout
875 \begin_inset Note Note
878 \begin_layout Plain Layout
879 epsとpdfの両方をtrueにして、latexとpdflatexの両方を動作するようにすることができます。実際には、おそらく一つを選ぶだけでよいでしょう。
888 \begin_layout Plain Layout
890 <<iris-pairs,fig=TRUE,width=4.5,height=4.5,eps=TRUE,pdf=TRUE>>=
893 \begin_layout Plain Layout
895 pairs(iris, col = iris$Species)
898 \begin_layout Plain Layout
908 \begin_layout Plain Layout
909 \begin_inset Caption Standard
911 \begin_layout Plain Layout
917 \begin_inset CommandInset label
919 name "fig:iris-pairs"
936 \begin_layout Standard
937 \begin_inset Float figure
942 \begin_layout Plain Layout
947 \begin_layout Plain Layout
949 <<iris-boxplots,fig=TRUE,width=7,height=2,keep.source=F,eps=T,pdf=T>>=
952 \begin_layout Plain Layout
954 par(mar=c(4,5,.1,.3), las=1)
957 \begin_layout Plain Layout
959 boxplot(Sepal.Length~Species,data=iris,horizontal=TRUE,xlab='Sepal.Length')
962 \begin_layout Plain Layout
972 \begin_layout Plain Layout
973 \begin_inset Caption Standard
975 \begin_layout Plain Layout
976 種でグループ化された萼片の長さのボックスプロット
977 \begin_inset CommandInset label
979 name "fig:iris-boxplots"
996 \begin_layout Standard
997 Sweave文書中のRコードは、単一のRスクリプトとして書きだすことができますが、これは
1004 \begin_layout Section
1012 \begin_layout Standard
1017 モジュールは、\SpecialCharNoPassThru LyX
1018 文書が、Rを使った文芸的プログラミングのコンポーネントを含んでいることを宣言しますので、\SpecialCharNoPassThru LyX
1019 は、そのような文書を取り扱う特定の変換子を使っ
1020 て処理します(取扱説明書カスタマイズ篇参照)。
1028 変換子を使用しますが、これは、\SpecialCharNoPassThru LyX
1037 が本体になっています。このスクリプトは、\SpecialCharNoPassThru LyX
1042 文書を受け取り、これを\SpecialCharNoPassThru TeX
1043 文書に変換するためにSweaveを呼び出します。その後の作業は、\SpecialCharNoPassThru LyX
1047 \begin_layout Standard
1052 形式から\SpecialCharNoPassThru LaTeX
1053 への変換子は、下記のコマンド行でRを呼び出します。
1056 \begin_layout Standard
1060 \begin_layout Plain Layout
1067 \begin_layout Plain Layout
1069 Rscript --no-save --no-restore $$s/scripts/lyxsweave.R $$p$$i $$p$$o $$e
1073 \begin_layout Plain Layout
1085 \begin_layout Standard
1086 \SpecialCharNoPassThru LyX
1093 ヘルプ\SpecialChar menuseparator
1094 \SpecialCharNoPassThru LyX
1097 メニューに記載があります。他にRに渡すことのできるオプションは、Rスクリプト中で説明されており、また、\SpecialCharNoPassThru LyX
1114 についての詳しい説明があります。一般ユーザーは、これらの意味について詳しく知る必要はありませんが、ここでは、Rコードにまつわる若干の問題について説明しておく必要
1118 \begin_layout Enumerate
1119 \SpecialCharNoPassThru LyX
1120 文書のエンコーディングを表す文字列は、Rにコマンドラインオプションとして渡されます。取り得る値は、
1135 \begin_layout Enumerate
1136 Sweave文書内のRコード組は、\SpecialCharNoPassThru LyX
1137 文書のあるディレクトリで実行されます(自信のない場合は、現在の作業ディレクトリがどこかを見るために、コード組に
1141 を置いてください)。この場合、データファイルは同じディレクトリ下に置くことができ、再現可能性を保証するために、R内部では相対パスを使用してください。すなわち、他
1142 のシステムでは存在しないかもしれない、ハードコードのパスを書く必要はありません。
1145 \begin_layout Enumerate
1146 \SpecialCharNoPassThru LaTeX
1151 を検出できないと、このRスクリプトが自動的に
1155 を一時ディレクトリにコピーし、そこで\SpecialCharNoPassThru LaTeX
1159 \begin_layout Enumerate
1160 Sweaveは、既定でRnwファイルのファイル名を、画像出力の接頭辞文字列として使用します。既知の問題の1つ(
1161 \begin_inset CommandInset href
1164 target "http://www.lyx.org/trac/ticket/7551"
1168 )として、ファイル名(拡張子を除く)にピリオドが含まれている場合、\SpecialCharNoPassThru LaTeX
1175 で処理する際に失敗しうるということが知られています。したがって、接頭辞の既定値は、すべてのピリオドを「-」で置換したファイル名にしてあります。この問題は、Swe
1176 aveで直接的に解決することもができます。Sweaveオプションの
1180 を、ピリオドを含まない文字列に設定すると、このオプションが既定値を上書きします。
1183 \begin_layout Standard
1188 オプションが設定されています。このオプションは、Sweaveが下記の2つのパッケージを読み込んでしまうのを防ぎます。
1191 \begin_layout Standard
1195 \begin_layout Plain Layout
1202 \begin_layout Plain Layout
1206 RequirePackage[T1]{fontenc}
1209 \begin_layout Plain Layout
1216 \begin_layout Plain Layout
1228 \begin_layout Standard
1229 \SpecialCharNoPassThru LyX
1230 は、既定でフォントエンコーディングを取り扱うことができるので、Sweaveにこれをやってもらう必要はないのです(その上、これはパッケージオプションの衝突を
1231 もたらす可能性があります)。一方、ユーザーは、必要ならばプリアンブルで
1235 パッケージを手動で読み込ませることができます。
1238 \begin_layout Section
1242 \begin_layout Standard
1243 \SpecialCharNoPassThru LyX
1244 2.0以降、コンパイル中の詳細な情報を、
1246 表示\SpecialChar menuseparator
1249 で見ることができるようになりました。これは、問題の解決に非常に役に立ちます。Rの処理は、メッセージパネルに表示され、エラーが発生した場合には、どのコード組がおか
1250 しいのか知ることができます。例えば、この文書をコンパイルする時、以下のようなメッセージを見ることができるでしょう。
1253 \begin_layout Standard
1257 \begin_layout Plain Layout
1264 \begin_layout Plain Layout
1266 17:58:47.868: Processing code chunks with options ...
1269 \begin_layout Plain Layout
1271 17:58:47.885: 1 : echo keep.source term verbatim (label=setup)
1274 \begin_layout Plain Layout
1276 17:58:47.889: 2 : echo keep.source (label=sweave-manual)
1279 \begin_layout Plain Layout
1281 17:58:47.908: 3 : echo keep.source term verbatim (label=print-integers)
1284 \begin_layout Plain Layout
1289 \begin_layout Plain Layout
1291 17:58:47.941: Loading required package: xtable
1294 \begin_layout Plain Layout
1296 17:58:47.976: 9 : echo term verbatim pdf (label=iris-pairs)
1299 \begin_layout Plain Layout
1304 \begin_layout Plain Layout
1306 17:58:48.116: You can now run (pdf)latex on 'sweave.tex'
1309 \begin_layout Plain Layout
1321 \begin_layout Standard
1326 の後の文字列が、コード組のラベルを示します。コード組のどれかがRでエラーを起こせば、即座にここにエラーメッセージを見ることができます。
1329 \begin_layout Standard
1330 もうひとつ知られている問題点は、\SpecialCharNoPassThru LyX
1335 を使用して)手を加えた場合、\SpecialCharNoPassThru LyX
1342 のようなマクロを書き加えてしまうことがあるので、Sweaveコード組がエラーを起こす場合があるという事です。この場合のコード組は、下記のようになってしまいます。
1345 \begin_layout Standard
1349 \begin_layout Plain Layout
1356 \begin_layout Plain Layout
1360 centering{}<<xtable-demo,results=tex,echo=FALSE>>=
1363 \begin_layout Plain Layout
1375 \begin_layout Standard
1380 は行頭すぐに置かれなくてはならないため、これは正しいSweaveコードではありません。したがって、コード組段落の配置に手を加える場合には、
1382 表示\SpecialChar menuseparator
1389 が改行後に現れるようにすることをお勧めします。表
1390 \begin_inset CommandInset ref
1392 reference "tab:xtable-demo"
1396 のコード組に手動で空行が追加されているのは、このためです。
1399 \begin_layout Section
1403 \begin_layout Standard
1405 \begin_inset Flex URL
1408 \begin_layout Plain Layout
1410 http://www.stat.uni-muenchen.de/~leisch/Sweave/
1415 にあります。 The CRAN task view on 「Reproducible Research」にあるCRANタスクビューには、便利と思われるSweav
1417 \begin_inset Flex URL
1420 \begin_layout Plain Layout
1422 http://cran.r-project.org/web/views/ReproducibleResearch.html
1427 をご覧ください。\SpecialCharNoPassThru LyX
1428 とSweaveに関する質問は、\SpecialCharNoPassThru LyX
1430 \begin_inset Flex URL
1433 \begin_layout Plain Layout
1435 http://www.lyx.org/MailingLists
1440 )に投稿してください。さらに多くの\SpecialCharNoPassThru LyX
1442 \begin_inset Flex URL
1445 \begin_layout Plain Layout
1447 https://github.com/yihui/lyx
1455 \begin_layout Section
1459 \begin_layout Subsection
1460 Sweaveをbeamerで使うにはどうすればよいでしょうか
1463 \begin_layout Standard
1464 beamerのスライドでSweaveを使うと、\SpecialCharNoPassThru LyX
1465 では\SpecialCharNoPassThru LaTeX
1466 エラーが発生します。その原因は、生のRコードを含むbeamerフレームのせいです。これを解決す
1467 るには、通常のフレームの代わりに脆弱フレームを使うか、フレーム表題に
1469 挿入\SpecialChar menuseparator
1479 \begin_layout Subsection
1480 Rnw文書をコンパイルするためのRスクリプトを書いてもいいですか
1483 \begin_layout Standard
1488 /scripts/lyxsweave.R
1490 がどのように動作するかを理解する必要がありますので、できればそのRソースコードを読むことをお勧めします(特に、Rがパスをどのように取得し、Rnw文書を取り扱うの
1495 をどのように使っているかを見てください)。その後、カスタマイズした
1503 (ヘルプ\SpecialChar menuseparator
1504 \SpecialCharNoPassThru LyX
1509 ディレクトリ下に置いてください。\SpecialCharNoPassThru LyX
1522 がユーザーディレクトリで検出されれば、それが使用されます。\SpecialCharNoPassThru LyX
1523 ライブラリディレクトリ下にあるスクリプトを直接ハックしてしまうと、\SpecialCharNoPassThru LyX
1525 トが上書きされてしまいます(ユーザーディレクトリは影響を受けません)ので、お勧めしません。
1528 \begin_layout Standard
1529 なお、Rの公式Sweaveの他に、Sweaveの代替ツールである
1533 パッケージもサポートされており、対応するモジュール名は