1 #LyX 2.3 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 true
37 \font_sf_scale 100 100
38 \font_tt_scale 100 100
40 \use_dash_ligatures false
42 \default_output_format default
44 \bibtex_command default
45 \index_command default
46 \paperfontsize default
51 \use_package amsmath 1
52 \use_package amssymb 1
55 \use_package mathdots 1
56 \use_package mathtools 1
58 \use_package stackrel 1
59 \use_package stmaryrd 1
60 \use_package undertilde 1
62 \cite_engine_type default
66 \paperorientation portrait
81 \paragraph_separation indent
82 \paragraph_indentation default
84 \math_numbering_side default
89 \paperpagestyle default
90 \tracking_changes false
99 \begin_layout Standard
103 \begin_layout Plain Layout
107 SweaveOpts{prefix=TRUE,prefix.string=sweave-prefix,keep.source=FALSE}
115 \begin_layout Standard
119 \begin_layout Plain Layout
123 maxwidth はプリアンブル中で定義されています。文書設定をご覧ください。
126 \begin_layout Plain Layout
150 \begin_layout Plain Layout
152 \begin_inset CommandInset href
154 name "xie@yihui.name"
155 target "xie@yihui.name"
170 \begin_layout Plain Layout
183 \begin_layout Plain Layout
195 \begin_layout Standard
196 Sweaveは、文芸的プログラミングの考えに従った、動的なレポート生成するための、R言語(
197 \begin_inset Flex URL
200 \begin_layout Plain Layout
202 http://www.r-project.org
207 )ツールです。Rコードは、\SpecialChar LaTeX
208 文書の中で混用することができ、文書がコンパイルされるときにRで実行されます。結果は、\SpecialChar TeX
212 \begin_layout Standard
218 モジュールを使えば、どの文書クラスでもSweaveをそのまま使うことができます。
224 文書\SpecialChar menuseparator
225 設定\SpecialChar menuseparator
228 を使用します。この説明書では、Sweaveでよく使われる機能をいくつか紹介し、本モジュールがどう動作するかを説明します。この説明書のPDF版は、
229 \begin_inset Flex URL
232 \begin_layout Plain Layout
234 https://github.com/downloads/yihui/lyx/sweave.pdf
242 \begin_layout Section
246 \begin_layout Standard
255 に依存しますので、このファイルが、システムの
259 変数に含まれるパスになくてはなりません。これは、LinuxやMac OSユーザーには大した問題とならないでしょうが、Windowsユーザーには混乱を招くかもしれ
264 が何かわからない場合には、R言語のリポジトリ
265 \begin_inset Flex URL
268 \begin_layout Plain Layout
270 https://github.com/yihui/lyx
279 を使って、パスを自動的に変更するか(推奨はできません。何にせよ
285 ツール\SpecialChar menuseparator
286 設定\SpecialChar menuseparator
287 パス\SpecialChar menuseparator
290 からRのバイナリパスを追加することができます(推奨)。後者の場合、大抵
302 のような形をしており、R内で下記のようにして確認することができます。
305 \begin_layout Standard
306 \begin_inset Flex Chunk
309 \begin_layout Plain Layout
311 \begin_inset Argument 1
314 \begin_layout Plain Layout
316 where-is-R-bin,eval=FALSE
324 \begin_layout Plain Layout
334 \begin_layout Standard
337 ツール\SpecialChar menuseparator
340 を使って、\SpecialChar LyX
353 モジュールを使うことはできません。Sweaveの更新は続いていますので、最新版のRを使用することをお勧めします。Rに同梱され、このパス下にある(CTANにはあり
354 ません)\SpecialChar LaTeX
359 によって、下記のように依存関係が追加されます。
362 \begin_layout Standard
363 \begin_inset Flex Chunk
366 \begin_layout Plain Layout
368 \begin_inset Argument 1
371 \begin_layout Plain Layout
373 sweave-sty,eval=FALSE
381 \begin_layout Plain Layout
383 file.path(R.home('share'), 'texmf', 'tex', 'latex')
391 \begin_layout Standard
393 ユーザーは、Mik\SpecialChar TeX
394 の設定で、Mik\SpecialChar TeX
395 のルートディレクトリ一覧にtexmfディレクトリも追加したほうが良いかもしれません。また、
411 あります。\SpecialChar LyX
416 を検出できないときは、直接Rからコピーしますので、このスタイルファイルがどこにあるかわからない場合でも、Sweaveモジュールは動作します。
419 \begin_layout Section
423 \begin_layout Standard
424 Sweave文書を書く前に、Sweaveオプションを設定しましょう。Sweaveの設定コマンドは
430 ですが、これは、\SpecialChar LyX
433 挿入\SpecialChar menuseparator
434 任意設定差込枠\SpecialChar menuseparator
440 挿入\SpecialChar menuseparator
444 )ことで挿入することができます。例えば、文頭で大域オプション
448 を設定して、すべてのRコードを抑制することもできます(既定では、Rコードとその出力は、両方とも\SpecialChar LaTeX
452 \begin_layout Standard
454 でRコードを書くには、まずレイアウト様式一覧(ツールバーの左上端のドロップリスト)から、
458 環境に変更するか、あるいは、単に\SpecialChar TeX
459 コード環境を開いて、Sweaveのコード組を書き込んでください。後者の方法の方が安定していますので、そちらをお勧めします。
462 \begin_layout Standard
471 のようなRオプションもSweaveの出力に便利です。前者のオプションは、出力の幅を調整するものであり、後者は引用符に関してよく起こる問題を回避することができます
472 。詳細については、Rに添付のSweave取扱説明書をお読みください。
475 \begin_layout Standard
476 \begin_inset Flex Chunk
479 \begin_layout Plain Layout
481 \begin_inset Argument 1
484 \begin_layout Plain Layout
486 setup, keep.source=TRUE
494 \begin_layout Plain Layout
496 ## オプション「digits」は桁数(の概数)を設定できます
499 \begin_layout Plain Layout
501 options(width = 70, useFancyQuotes = FALSE, digits = 4)
509 \begin_layout Standard
510 \begin_inset Flex Chunk
513 \begin_layout Plain Layout
515 \begin_inset Argument 1
518 \begin_layout Plain Layout
520 sweave-manual, eval=FALSE, keep.source=TRUE
528 \begin_layout Plain Layout
530 ## Sweaveのvignetteを見る (要 R >= 2.13.0)
533 \begin_layout Plain Layout
535 vignette("Sweave", package = "utils")
540 下記は、どのSエンジンでも動作する単純な例です。
543 \begin_layout Standard
544 \begin_inset Flex Chunk
547 \begin_layout Plain Layout
549 \begin_inset Argument 1
552 \begin_layout Plain Layout
554 print-integers, keep.source=TRUE
562 \begin_layout Plain Layout
567 \begin_layout Plain Layout
577 \begin_layout Standard
578 \begin_inset Flex Chunk
581 \begin_layout Plain Layout
583 \begin_inset Argument 1
586 \begin_layout Plain Layout
588 hide-results, results=hide
596 \begin_layout Plain Layout
598 ## results=hide を設定して意図的に出力を隠す
601 \begin_layout Plain Layout
608 単純な計算機をエミュレートすることもできます。
611 \begin_layout Standard
612 \begin_inset Flex Chunk
615 \begin_layout Plain Layout
617 \begin_inset Argument 1
620 \begin_layout Plain Layout
630 \begin_layout Plain Layout
635 \begin_layout Plain Layout
645 \begin_layout Standard
646 今度は、ガウシアンデータを見てみましょう。
649 \begin_layout Standard
650 \begin_inset Flex Chunk
653 \begin_layout Plain Layout
655 \begin_inset Argument 1
658 \begin_layout Plain Layout
668 \begin_layout Plain Layout
670 set.seed(123) # 再現可能性のため
673 \begin_layout Plain Layout
678 \begin_layout Plain Layout
683 \begin_layout Plain Layout
693 \begin_layout Standard
694 数値を標準テキストに簡単に統合させることができます。これは、
700 コマンドによって行われ、\SpecialChar LyX
703 挿入\SpecialChar menuseparator
704 任意設定差込枠\SpecialChar menuseparator
708 コードを使うこともできます。例えば、ベクトル
713 \begin_inset Flex S/R expression
716 \begin_layout Plain Layout
728 \begin_inset Formula $p$
732 \begin_inset Flex S/R expression
735 \begin_layout Plain Layout
737 format.pval(t1$p.value)
746 のようなコマンドを使うことによって丸めることもできます。
749 \begin_layout Standard
780 \begin_layout Standard
781 \begin_inset Flex Chunk
784 \begin_layout Plain Layout
786 \begin_inset Argument 1
789 \begin_layout Plain Layout
799 \begin_layout Plain Layout
809 \begin_layout Standard
810 \begin_inset Float table
815 \begin_layout Plain Layout
816 \begin_inset Caption Standard
818 \begin_layout Plain Layout
824 \begin_inset CommandInset label
826 name "tab:xtable-demo"
838 \begin_layout Plain Layout
840 \begin_inset Flex Chunk
843 \begin_layout Plain Layout
845 \begin_inset Argument 1
848 \begin_layout Plain Layout
850 xtable-demo,results=tex,echo=FALSE
858 \begin_layout Plain Layout
860 if (require('xtable')) {
863 \begin_layout Plain Layout
865 print(xtable(sapply(iris[,-5], quantile)), floating=FALSE)
868 \begin_layout Plain Layout
870 } else cat('the xtable package is not available! please install.packages("xtable"
884 \begin_layout Standard
885 通常、人々はこのような「生の」出力を好みませんので、これらのごちゃごちゃした数字を、
889 パッケージを使って綺麗にしてやるといいでしょう。表
890 \begin_inset CommandInset ref
892 reference "tab:xtable-demo"
900 パッケージの使い方を示すための例です。コード組のオプション
908 )で包まれるのではなく、生の\SpecialChar LaTeX
909 コードとして書き出されるように保証するためのものです。
912 \begin_layout Standard
914 \begin_inset CommandInset ref
916 reference "fig:iris-pairs"
921 \begin_inset CommandInset ref
923 reference "fig:iris-boxplots"
927 は、Sweaveを使って画像を生成する簡単な例です。
930 \begin_layout Standard
931 \begin_inset Float figure
936 \begin_layout Plain Layout
938 \begin_inset Note Note
941 \begin_layout Plain Layout
942 epsとpdfの両方をtrueにして、latexとpdflatexの両方を動作するようにすることができます。実際には、おそらく一つを選ぶだけでよいでしょう。
948 \begin_inset Flex Chunk
951 \begin_layout Plain Layout
953 \begin_inset Argument 1
956 \begin_layout Plain Layout
958 iris-pairs,fig=TRUE,width=4.5,height=4.5,eps=TRUE,pdf=TRUE
966 \begin_layout Plain Layout
968 pairs(iris, col = iris$Species)
976 \begin_layout Plain Layout
977 \begin_inset Caption Standard
979 \begin_layout Plain Layout
985 \begin_inset CommandInset label
987 name "fig:iris-pairs"
1004 \begin_layout Standard
1005 \begin_inset Float figure
1010 \begin_layout Plain Layout
1012 \begin_inset Flex Chunk
1015 \begin_layout Plain Layout
1017 \begin_inset Argument 1
1020 \begin_layout Plain Layout
1022 iris-boxplots,fig=TRUE,width=7,height=2,keep.source=F,eps=T,pdf=T
1030 \begin_layout Plain Layout
1032 par(mar=c(4,5,.1,.3), las=1)
1035 \begin_layout Plain Layout
1037 boxplot(Sepal.Length~Species,data=iris,horizontal=TRUE,xlab='Sepal.Length')
1045 \begin_layout Plain Layout
1046 \begin_inset Caption Standard
1048 \begin_layout Plain Layout
1049 種でグループ化された萼片の長さのボックスプロット
1050 \begin_inset CommandInset label
1052 name "fig:iris-boxplots"
1069 \begin_layout Standard
1070 Sweave文書中のRコードは、単一のRスクリプトとして書きだすことができますが、これは
1077 \begin_layout Section
1085 \begin_layout Standard
1090 モジュールは、\SpecialChar LyX
1091 文書が、Rを使った文芸的プログラミングのコンポーネントを含んでいることを宣言しますので、\SpecialChar LyX
1092 は、そのような文書を取り扱う特定の変換子を使って処理します
1101 変換子を使用しますが、これは、\SpecialChar LyX
1110 が本体になっています。このスクリプトは、\SpecialChar LyX
1115 文書を受け取り、これを\SpecialChar TeX
1116 文書に変換するためにSweaveを呼び出します。その後の作業は、\SpecialChar LyX
1120 \begin_layout Standard
1125 形式から\SpecialChar LaTeX
1126 への変換子は、下記のコマンド行でRを呼び出します。
1129 \begin_layout Standard
1133 \begin_layout Plain Layout
1140 \begin_layout Plain Layout
1142 Rscript --no-save --no-restore $$s/scripts/lyxsweave.R $$p$$i $$p$$o $$e
1146 \begin_layout Plain Layout
1158 \begin_layout Standard
1166 ヘルプ\SpecialChar menuseparator
1170 メニューに記載があります。他にRに渡すことのできるオプションは、Rスクリプト中で説明されており、また、\SpecialChar LyX
1187 についての詳しい説明があります。一般ユーザーは、これらの意味について詳しく知る必要はありませんが、ここでは、Rコードにまつわる若干の問題について説明しておく必要
1191 \begin_layout Enumerate
1193 文書のエンコーディングを表す文字列は、Rにコマンドラインオプションとして渡されます。取り得る値は、
1208 \begin_layout Enumerate
1209 Sweave文書内のRコード組は、\SpecialChar LyX
1210 文書のあるディレクトリで実行されます(自信のない場合は、現在の作業ディレクトリがどこかを見るために、コード組に
1214 を置いてください)。この場合、データファイルは同じディレクトリ下に置くことができ、再現可能性を保証するために、R内部では相対パスを使用してください。すなわち、他
1215 のシステムでは存在しないかもしれない、ハードコードのパスを書く必要はありません。
1218 \begin_layout Enumerate
1224 を検出できないと、このRスクリプトが自動的に
1228 を一時ディレクトリにコピーし、そこで\SpecialChar LaTeX
1232 \begin_layout Enumerate
1233 Sweaveは、既定でRnwファイルのファイル名を、画像出力の接頭辞文字列として使用します。既知の問題の1つ(
1234 \begin_inset CommandInset href
1237 target "http://www.lyx.org/trac/ticket/7551"
1242 )として、ファイル名(拡張子を除く)にピリオドが含まれている場合、\SpecialChar LaTeX
1249 で処理する際に失敗しうるということが知られています。したがって、接頭辞の既定値は、すべてのピリオドを「-」で置換したファイル名にしてあります。この問題は、Swe
1250 aveで直接的に解決することもができます。Sweaveオプションの
1254 を、ピリオドを含まない文字列に設定すると、このオプションが既定値を上書きします。
1257 \begin_layout Standard
1262 オプションが設定されています。このオプションは、Sweaveが下記の2つのパッケージを読み込んでしまうのを防ぎます。
1265 \begin_layout Standard
1269 \begin_layout Plain Layout
1276 \begin_layout Plain Layout
1280 RequirePackage[T1]{fontenc}
1283 \begin_layout Plain Layout
1290 \begin_layout Plain Layout
1302 \begin_layout Standard
1304 は、既定でフォントエンコーディングを取り扱うことができるので、Sweaveにこれをやってもらう必要はないのです(その上、これはパッケージオプションの衝突をもたら
1305 す可能性があります)。一方、ユーザーは、必要ならばプリアンブルで
1309 パッケージを手動で読み込ませることができます。
1312 \begin_layout Section
1316 \begin_layout Standard
1318 2.0以降、コンパイル中の詳細な情報を、
1320 表示\SpecialChar menuseparator
1323 で見ることができるようになりました。これは、問題の解決に非常に役に立ちます。Rの処理は、メッセージパネルに表示され、エラーが発生した場合には、どのコード組がおか
1324 しいのか知ることができます。例えば、この文書をコンパイルする時、以下のようなメッセージを見ることができるでしょう。
1327 \begin_layout Standard
1331 \begin_layout Plain Layout
1338 \begin_layout Plain Layout
1340 17:58:47.868: Processing code chunks with options ...
1343 \begin_layout Plain Layout
1345 17:58:47.885: 1 : echo keep.source term verbatim (label=setup)
1348 \begin_layout Plain Layout
1350 17:58:47.889: 2 : echo keep.source (label=sweave-manual)
1353 \begin_layout Plain Layout
1355 17:58:47.908: 3 : echo keep.source term verbatim (label=print-integers)
1358 \begin_layout Plain Layout
1363 \begin_layout Plain Layout
1365 17:58:47.941: Loading required package: xtable
1368 \begin_layout Plain Layout
1370 17:58:47.976: 9 : echo term verbatim pdf (label=iris-pairs)
1373 \begin_layout Plain Layout
1378 \begin_layout Plain Layout
1380 17:58:48.116: You can now run (pdf)latex on 'sweave.tex'
1383 \begin_layout Plain Layout
1395 \begin_layout Standard
1400 の後の文字列が、コード組のラベルを示します。コード組のどれかがRでエラーを起こせば、即座にここにエラーメッセージを見ることができます。
1403 \begin_layout Standard
1404 もうひとつ知られている問題点は、\SpecialChar LyX
1409 を使用して)手を加えた場合、\SpecialChar LyX
1416 のようなマクロを書き加えてしまうことがあるので、Sweaveコード組がエラーを起こす場合があるという事です。この場合のコード組は、下記のようになってしまいます。
1419 \begin_layout Standard
1423 \begin_layout Plain Layout
1430 \begin_layout Plain Layout
1434 centering{}<<xtable-demo,results=tex,echo=FALSE>>=
1437 \begin_layout Plain Layout
1449 \begin_layout Standard
1454 は行頭すぐに置かれなくてはならないため、これは正しいSweaveコードではありません。したがって、コード組段落の配置に手を加える場合には、
1456 表示\SpecialChar menuseparator
1463 が改行後に現れるようにすることをお勧めします。表
1464 \begin_inset CommandInset ref
1466 reference "tab:xtable-demo"
1470 のコード組に手動で空行が追加されているのは、このためです。
1473 \begin_layout Section
1477 \begin_layout Standard
1479 \begin_inset Flex URL
1482 \begin_layout Plain Layout
1484 https://stat.ethz.ch/R-manual/R-devel/library/utils/doc/Sweave.pdf
1489 にあります。「Reproducible Research」にあるCRANタスクビューには、便利と思われるSweave関連パッケージの一覧があります。
1490 \begin_inset Flex URL
1493 \begin_layout Plain Layout
1495 http://cran.r-project.org/web/views/ReproducibleResearch.html
1500 をご覧ください。\SpecialChar LyX
1501 とSweaveに関する質問は、\SpecialChar LyX
1503 \begin_inset Flex URL
1506 \begin_layout Plain Layout
1508 http://www.lyx.org/MailingLists
1513 )に投稿してください。さらに多くの\SpecialChar LyX
1515 \begin_inset Flex URL
1518 \begin_layout Plain Layout
1520 https://github.com/yihui/lyx
1528 \begin_layout Section
1532 \begin_layout Subsection
1533 Sweaveをbeamerで使うにはどうすればよいでしょうか
1536 \begin_layout Standard
1537 beamerのスライドでSweaveを使うと、\SpecialChar LyX
1538 では\SpecialChar LaTeX
1539 エラーが発生します。その原因は、生のRコードを含むbeamerフレームのせいです。これを解決するには、通常のフ
1540 レームの代わりに脆弱フレームを使うか、フレーム表題に
1542 挿入\SpecialChar menuseparator
1552 \begin_layout Subsection
1553 Rnw文書をコンパイルするためのRスクリプトを書いてもいいですか
1556 \begin_layout Standard
1561 /scripts/lyxsweave.R
1563 がどのように動作するかを理解する必要がありますので、できればそのRソースコードを読むことをお勧めします(特に、Rがパスをどのように取得し、Rnw文書を取り扱うの
1568 をどのように使っているかを見てください)。その後、カスタマイズした
1576 (ヘルプ\SpecialChar menuseparator
1582 ディレクトリ下に置いてください。\SpecialChar LyX
1595 がユーザーディレクトリで検出されれば、それが使用されます。\SpecialChar LyX
1596 ライブラリディレクトリ下にあるスクリプトを直接ハックしてしまうと、\SpecialChar LyX
1598 れてしまいます(ユーザーディレクトリは影響を受けません)ので、お勧めしません。
1601 \begin_layout Standard
1602 なお、Rの公式Sweaveの他に、Sweaveの代替ツールである
1606 パッケージもサポートされており、対応するモジュール名は