1 #LyX 2.2 created this file. For more info see http://www.lyx.org/
5 \origin /systemlyxdir/examples/ja/
8 %% maxwidth is the original width if it's less than linewidth
9 %% otherwise use linewidth (to make sure the graphics do not exceed the margin)
11 \ifdim\Gin@nat@width>\linewidth
19 \use_default_options true
23 \maintain_unincluded_children false
25 \language_package none
26 \inputencoding utf8-platex
28 \font_roman "palatino" "default"
29 \font_sans "lmss" "default"
30 \font_typewriter "lmtt" "default"
31 \font_math "auto" "auto"
32 \font_default_family default
33 \use_non_tex_fonts false
36 \font_sf_scale 100 100
37 \font_tt_scale 100 100
39 \default_output_format pdf
41 \bibtex_command default
42 \index_command default
43 \paperfontsize default
48 \use_package amsmath 1
49 \use_package amssymb 1
52 \use_package mathdots 1
53 \use_package mathtools 0
55 \use_package stackrel 0
56 \use_package stmaryrd 0
57 \use_package undertilde 0
59 \cite_engine_type default
63 \paperorientation portrait
77 \paragraph_separation indent
78 \paragraph_indentation default
79 \quotes_language english
82 \paperpagestyle default
83 \tracking_changes false
92 \begin_layout Standard
96 \begin_layout Plain Layout
100 SweaveOpts{prefix=TRUE,prefix.string=sweave-prefix,keep.source=FALSE}
108 \begin_layout Standard
112 \begin_layout Plain Layout
116 maxwidth はプリアンブル中で定義されています。文書設定をご覧ください。
119 \begin_layout Plain Layout
134 \SpecialCharNoPassThru LyX
143 \begin_layout Plain Layout
145 \begin_inset CommandInset href
147 name "xie@yihui.name"
148 target "xie@yihui.name"
162 \begin_layout Plain Layout
175 \begin_layout Plain Layout
187 \begin_layout Standard
188 Sweaveは、文芸的プログラミングの考えに従った、動的なレポート生成するための、R言語(
189 \begin_inset Flex URL
192 \begin_layout Plain Layout
194 http://www.r-project.org
199 )ツールです。Rコードは、\SpecialCharNoPassThru LaTeX
200 文書の中で混用することができ、文書がコンパイルされるときにRで実行されます。結果は、\SpecialCharNoPassThru TeX
204 \begin_layout Standard
205 \SpecialCharNoPassThru LyX
210 モジュールを使えば、どの文書クラスでもSweaveをそのまま使うことができます。
216 文書\SpecialChar menuseparator
217 設定\SpecialChar menuseparator
220 を使用します。この説明書では、Sweaveでよく使われる機能をいくつか紹介し、本モジュールがどう動作するかを説明します。この説明書のPDF版は、
221 \begin_inset Flex URL
224 \begin_layout Plain Layout
226 https://github.com/downloads/yihui/lyx/sweave.pdf
234 \begin_layout Section
238 \begin_layout Standard
247 に依存しますので、このファイルが、システムの
251 変数に含まれるパスになくてはなりません。これは、LinuxやMac OSユーザーには大した問題とならないでしょうが、Windowsユーザーには混乱を招くかもしれ
256 が何かわからない場合には、R言語のリポジトリ
257 \begin_inset Flex URL
260 \begin_layout Plain Layout
262 https://github.com/yihui/lyx
271 を使って、パスを自動的に変更するか(推奨はできません。何にせよ
277 ツール\SpecialChar menuseparator
278 設定\SpecialChar menuseparator
279 パス\SpecialChar menuseparator
282 からRのバイナリパスを追加することができます(推奨)。後者の場合、大抵
294 のような形をしており、R内で下記のようにして確認することができます。
297 \begin_layout Standard
301 \begin_layout Plain Layout
303 <<where-is-R-bin,eval=FALSE>>=
306 \begin_layout Plain Layout
311 \begin_layout Plain Layout
321 \begin_layout Standard
324 ツール\SpecialChar menuseparator
327 を使って、\SpecialCharNoPassThru LyX
340 モジュールを使うことはできません。Sweaveの更新は続いていますので、最新版のRを使用することをお勧めします。Rに同梱され、このパス下にある(CTANにはあり
341 ません)\SpecialCharNoPassThru LaTeX
346 によって、下記のように依存関係が追加されます。
349 \begin_layout Standard
353 \begin_layout Plain Layout
355 <<sweave-sty,eval=FALSE>>=
358 \begin_layout Plain Layout
360 file.path(R.home('share'), 'texmf', 'tex', 'latex')
363 \begin_layout Plain Layout
373 \begin_layout Standard
374 Mik\SpecialCharNoPassThru TeX
375 ユーザーは、Mik\SpecialCharNoPassThru TeX
376 の設定で、Mik\SpecialCharNoPassThru TeX
377 のルートディレクトリ一覧にtexmfディレクトリも追加したほうが良いかもしれません。また、
393 あります。\SpecialCharNoPassThru LyX
398 を検出できないときは、直接Rからコピーしますので、このスタイルファイルがどこにあるかわからない場合でも、Sweaveモジュールは動作します。
401 \begin_layout Section
405 \begin_layout Standard
406 Sweave文書を書く前に、Sweaveオプションを設定しましょう。Sweaveの設定コマンドは
412 ですが、これは、\SpecialCharNoPassThru LyX
415 挿入\SpecialChar menuseparator
416 任意設定差込枠\SpecialChar menuseparator
419 か、\SpecialCharNoPassThru TeX
422 挿入\SpecialChar menuseparator
423 \SpecialCharNoPassThru TeX
426 )ことで挿入することができます。例えば、文頭で大域オプション
430 を設定して、すべてのRコードを抑制することもできます(既定では、Rコードとその出力は、両方とも\SpecialCharNoPassThru LaTeX
434 \begin_layout Standard
435 \SpecialCharNoPassThru LyX
436 でRコードを書くには、まずレイアウト様式一覧(ツールバーの左上端のドロップリスト)から、
440 環境に変更するか、あるいは、単に\SpecialCharNoPassThru TeX
441 コード環境を開いて、Sweaveのコード組を書き込んでください。後者の方法の方が安定していますので、そちらをお勧めします。
444 \begin_layout Standard
453 のようなRオプションもSweaveの出力に便利です。前者のオプションは、出力の幅を調整するものであり、後者は引用符に関してよく起こる問題を回避することができます
454 。詳細については、Rに添付のSweave取扱説明書をお読みください。
457 \begin_layout Standard
461 \begin_layout Plain Layout
463 <<setup, keep.source=TRUE>>=
466 \begin_layout Plain Layout
468 ## オプション「digits」は桁数(の概数)を設定できます
471 \begin_layout Plain Layout
473 options(width = 70, useFancyQuotes = FALSE, digits = 4)
476 \begin_layout Plain Layout
481 \begin_layout Plain Layout
483 <<sweave-manual, eval=FALSE, keep.source=TRUE>>=
486 \begin_layout Plain Layout
488 ## Sweaveのvignetteを見る (要 R >= 2.13.0)
491 \begin_layout Plain Layout
493 vignette("Sweave", package = "utils")
496 \begin_layout Plain Layout
506 \begin_layout Standard
507 下記は、どのSエンジンでも動作する単純な例です。
510 \begin_layout Standard
514 \begin_layout Plain Layout
516 <<print-integers, keep.source=TRUE>>=
519 \begin_layout Plain Layout
524 \begin_layout Plain Layout
529 \begin_layout Plain Layout
534 \begin_layout Plain Layout
536 <<hide-results, results=hide>>=
539 \begin_layout Plain Layout
541 ## results=hide を設定して意図的に出力を隠す
544 \begin_layout Plain Layout
549 \begin_layout Plain Layout
559 \begin_layout Standard
560 単純な計算機をエミュレートすることもできます。
563 \begin_layout Standard
567 \begin_layout Plain Layout
572 \begin_layout Plain Layout
577 \begin_layout Plain Layout
582 \begin_layout Plain Layout
592 \begin_layout Standard
593 今度は、ガウシアンデータを見てみましょう。
596 \begin_layout Standard
600 \begin_layout Plain Layout
605 \begin_layout Plain Layout
607 set.seed(123) # 再現可能性のため
610 \begin_layout Plain Layout
615 \begin_layout Plain Layout
620 \begin_layout Plain Layout
625 \begin_layout Plain Layout
635 \begin_layout Standard
636 数値を標準テキストに簡単に統合させることができます。これは、
642 コマンドによって行われ、\SpecialCharNoPassThru LyX
645 挿入\SpecialChar menuseparator
646 任意設定差込枠\SpecialChar menuseparator
649 ですが、\SpecialCharNoPassThru TeX
650 コードを使うこともできます。例えば、ベクトル
655 \begin_inset Flex S/R expression
658 \begin_layout Plain Layout
670 \begin_inset Formula $p$
674 \begin_inset Flex S/R expression
677 \begin_layout Plain Layout
679 format.pval(t1$p.value)
688 のようなコマンドを使うことによって丸めることもできます。
691 \begin_layout Standard
722 \begin_layout Standard
726 \begin_layout Plain Layout
731 \begin_layout Plain Layout
736 \begin_layout Plain Layout
746 \begin_layout Standard
747 \begin_inset Float table
752 \begin_layout Plain Layout
753 \begin_inset Caption Standard
755 \begin_layout Plain Layout
761 \begin_inset CommandInset label
763 name "tab:xtable-demo"
775 \begin_layout Plain Layout
780 \begin_layout Plain Layout
784 \begin_layout Plain Layout
786 <<xtable-demo,results=tex,echo=FALSE>>=
789 \begin_layout Plain Layout
791 if (require('xtable')) {
794 \begin_layout Plain Layout
796 print(xtable(sapply(iris[,-5], quantile)), floating=FALSE)
799 \begin_layout Plain Layout
801 } else cat('the xtable package is not available! please install.packages("xtable"
805 \begin_layout Plain Layout
820 \begin_layout Standard
821 通常、人々はこのような「生の」出力を好みませんので、これらのごちゃごちゃした数字を、
825 パッケージを使って綺麗にしてやるといいでしょう。表
826 \begin_inset CommandInset ref
828 reference "tab:xtable-demo"
836 パッケージの使い方を示すための例です。コード組のオプション
844 )で包まれるのではなく、生の\SpecialCharNoPassThru LaTeX
845 コードとして書き出されるように保証するためのものです。
848 \begin_layout Standard
850 \begin_inset CommandInset ref
852 reference "fig:iris-pairs"
857 \begin_inset CommandInset ref
859 reference "fig:iris-boxplots"
863 は、Sweaveを使って画像を生成する簡単な例です。
866 \begin_layout Standard
867 \begin_inset Float figure
872 \begin_layout Plain Layout
874 \begin_inset Note Note
877 \begin_layout Plain Layout
878 epsとpdfの両方をtrueにして、latexとpdflatexの両方を動作するようにすることができます。実際には、おそらく一つを選ぶだけでよいでしょう。
887 \begin_layout Plain Layout
889 <<iris-pairs,fig=TRUE,width=4.5,height=4.5,eps=TRUE,pdf=TRUE>>=
892 \begin_layout Plain Layout
894 pairs(iris, col = iris$Species)
897 \begin_layout Plain Layout
907 \begin_layout Plain Layout
908 \begin_inset Caption Standard
910 \begin_layout Plain Layout
916 \begin_inset CommandInset label
918 name "fig:iris-pairs"
935 \begin_layout Standard
936 \begin_inset Float figure
941 \begin_layout Plain Layout
946 \begin_layout Plain Layout
948 <<iris-boxplots,fig=TRUE,width=7,height=2,keep.source=F,eps=T,pdf=T>>=
951 \begin_layout Plain Layout
953 par(mar=c(4,5,.1,.3), las=1)
956 \begin_layout Plain Layout
958 boxplot(Sepal.Length~Species,data=iris,horizontal=TRUE,xlab='Sepal.Length')
961 \begin_layout Plain Layout
971 \begin_layout Plain Layout
972 \begin_inset Caption Standard
974 \begin_layout Plain Layout
975 種でグループ化された萼片の長さのボックスプロット
976 \begin_inset CommandInset label
978 name "fig:iris-boxplots"
995 \begin_layout Standard
996 Sweave文書中のRコードは、単一のRスクリプトとして書きだすことができますが、これは
1003 \begin_layout Section
1011 \begin_layout Standard
1016 モジュールは、\SpecialCharNoPassThru LyX
1017 文書が、Rを使った文芸的プログラミングのコンポーネントを含んでいることを宣言しますので、\SpecialCharNoPassThru LyX
1018 は、そのような文書を取り扱う特定の変換子を使っ
1019 て処理します(取扱説明書カスタマイズ篇参照)。
1027 変換子を使用しますが、これは、\SpecialCharNoPassThru LyX
1036 が本体になっています。このスクリプトは、\SpecialCharNoPassThru LyX
1041 文書を受け取り、これを\SpecialCharNoPassThru TeX
1042 文書に変換するためにSweaveを呼び出します。その後の作業は、\SpecialCharNoPassThru LyX
1046 \begin_layout Standard
1051 形式から\SpecialCharNoPassThru LaTeX
1052 への変換子は、下記のコマンド行でRを呼び出します。
1055 \begin_layout Standard
1059 \begin_layout Plain Layout
1066 \begin_layout Plain Layout
1068 Rscript --no-save --no-restore $$s/scripts/lyxsweave.R $$p$$i $$p$$o $$e
1072 \begin_layout Plain Layout
1084 \begin_layout Standard
1085 \SpecialCharNoPassThru LyX
1092 ヘルプ\SpecialChar menuseparator
1093 \SpecialCharNoPassThru LyX
1096 メニューに記載があります。他にRに渡すことのできるオプションは、Rスクリプト中で説明されており、また、\SpecialCharNoPassThru LyX
1113 についての詳しい説明があります。一般ユーザーは、これらの意味について詳しく知る必要はありませんが、ここでは、Rコードにまつわる若干の問題について説明しておく必要
1117 \begin_layout Enumerate
1118 \SpecialCharNoPassThru LyX
1119 文書のエンコーディングを表す文字列は、Rにコマンドラインオプションとして渡されます。取り得る値は、
1134 \begin_layout Enumerate
1135 Sweave文書内のRコード組は、\SpecialCharNoPassThru LyX
1136 文書のあるディレクトリで実行されます(自信のない場合は、現在の作業ディレクトリがどこかを見るために、コード組に
1140 を置いてください)。この場合、データファイルは同じディレクトリ下に置くことができ、再現可能性を保証するために、R内部では相対パスを使用してください。すなわち、他
1141 のシステムでは存在しないかもしれない、ハードコードのパスを書く必要はありません。
1144 \begin_layout Enumerate
1145 \SpecialCharNoPassThru LaTeX
1150 を検出できないと、このRスクリプトが自動的に
1154 を一時ディレクトリにコピーし、そこで\SpecialCharNoPassThru LaTeX
1158 \begin_layout Enumerate
1159 Sweaveは、既定でRnwファイルのファイル名を、画像出力の接頭辞文字列として使用します。既知の問題の1つ(
1160 \begin_inset CommandInset href
1163 target "http://www.lyx.org/trac/ticket/7551"
1167 )として、ファイル名(拡張子を除く)にピリオドが含まれている場合、\SpecialCharNoPassThru LaTeX
1174 で処理する際に失敗しうるということが知られています。したがって、接頭辞の既定値は、すべてのピリオドを「-」で置換したファイル名にしてあります。この問題は、Swe
1175 aveで直接的に解決することもができます。Sweaveオプションの
1179 を、ピリオドを含まない文字列に設定すると、このオプションが既定値を上書きします。
1182 \begin_layout Standard
1187 オプションが設定されています。このオプションは、Sweaveが下記の2つのパッケージを読み込んでしまうのを防ぎます。
1190 \begin_layout Standard
1194 \begin_layout Plain Layout
1201 \begin_layout Plain Layout
1205 RequirePackage[T1]{fontenc}
1208 \begin_layout Plain Layout
1215 \begin_layout Plain Layout
1227 \begin_layout Standard
1228 \SpecialCharNoPassThru LyX
1229 は、既定でフォントエンコーディングを取り扱うことができるので、Sweaveにこれをやってもらう必要はないのです(その上、これはパッケージオプションの衝突を
1230 もたらす可能性があります)。一方、ユーザーは、必要ならばプリアンブルで
1234 パッケージを手動で読み込ませることができます。
1237 \begin_layout Section
1241 \begin_layout Standard
1242 \SpecialCharNoPassThru LyX
1243 2.0以降、コンパイル中の詳細な情報を、
1245 表示\SpecialChar menuseparator
1248 で見ることができるようになりました。これは、問題の解決に非常に役に立ちます。Rの処理は、メッセージパネルに表示され、エラーが発生した場合には、どのコード組がおか
1249 しいのか知ることができます。例えば、この文書をコンパイルする時、以下のようなメッセージを見ることができるでしょう。
1252 \begin_layout Standard
1256 \begin_layout Plain Layout
1263 \begin_layout Plain Layout
1265 17:58:47.868: Processing code chunks with options ...
1268 \begin_layout Plain Layout
1270 17:58:47.885: 1 : echo keep.source term verbatim (label=setup)
1273 \begin_layout Plain Layout
1275 17:58:47.889: 2 : echo keep.source (label=sweave-manual)
1278 \begin_layout Plain Layout
1280 17:58:47.908: 3 : echo keep.source term verbatim (label=print-integers)
1283 \begin_layout Plain Layout
1288 \begin_layout Plain Layout
1290 17:58:47.941: Loading required package: xtable
1293 \begin_layout Plain Layout
1295 17:58:47.976: 9 : echo term verbatim pdf (label=iris-pairs)
1298 \begin_layout Plain Layout
1303 \begin_layout Plain Layout
1305 17:58:48.116: You can now run (pdf)latex on 'sweave.tex'
1308 \begin_layout Plain Layout
1320 \begin_layout Standard
1325 の後の文字列が、コード組のラベルを示します。コード組のどれかがRでエラーを起こせば、即座にここにエラーメッセージを見ることができます。
1328 \begin_layout Standard
1329 もうひとつ知られている問題点は、\SpecialCharNoPassThru LyX
1334 を使用して)手を加えた場合、\SpecialCharNoPassThru LyX
1341 のようなマクロを書き加えてしまうことがあるので、Sweaveコード組がエラーを起こす場合があるという事です。この場合のコード組は、下記のようになってしまいます。
1344 \begin_layout Standard
1348 \begin_layout Plain Layout
1355 \begin_layout Plain Layout
1359 centering{}<<xtable-demo,results=tex,echo=FALSE>>=
1362 \begin_layout Plain Layout
1374 \begin_layout Standard
1379 は行頭すぐに置かれなくてはならないため、これは正しいSweaveコードではありません。したがって、コード組段落の配置に手を加える場合には、
1381 表示\SpecialChar menuseparator
1388 が改行後に現れるようにすることをお勧めします。表
1389 \begin_inset CommandInset ref
1391 reference "tab:xtable-demo"
1395 のコード組に手動で空行が追加されているのは、このためです。
1398 \begin_layout Section
1402 \begin_layout Standard
1404 \begin_inset Flex URL
1407 \begin_layout Plain Layout
1409 http://www.stat.uni-muenchen.de/~leisch/Sweave/
1414 にあります。 The CRAN task view on 「Reproducible Research」にあるCRANタスクビューには、便利と思われるSweav
1416 \begin_inset Flex URL
1419 \begin_layout Plain Layout
1421 http://cran.r-project.org/web/views/ReproducibleResearch.html
1426 をご覧ください。\SpecialCharNoPassThru LyX
1427 とSweaveに関する質問は、\SpecialCharNoPassThru LyX
1429 \begin_inset Flex URL
1432 \begin_layout Plain Layout
1434 http://www.lyx.org/MailingLists
1439 )に投稿してください。さらに多くの\SpecialCharNoPassThru LyX
1441 \begin_inset Flex URL
1444 \begin_layout Plain Layout
1446 https://github.com/yihui/lyx
1454 \begin_layout Section
1458 \begin_layout Subsection
1459 Sweaveをbeamerで使うにはどうすればよいでしょうか
1462 \begin_layout Standard
1463 beamerのスライドでSweaveを使うと、\SpecialCharNoPassThru LyX
1464 では\SpecialCharNoPassThru LaTeX
1465 エラーが発生します。その原因は、生のRコードを含むbeamerフレームのせいです。これを解決す
1466 るには、通常のフレームの代わりに脆弱フレームを使うか、フレーム表題に
1468 挿入\SpecialChar menuseparator
1478 \begin_layout Subsection
1479 Rnw文書をコンパイルするためのRスクリプトを書いてもいいですか
1482 \begin_layout Standard
1487 /scripts/lyxsweave.R
1489 がどのように動作するかを理解する必要がありますので、できればそのRソースコードを読むことをお勧めします(特に、Rがパスをどのように取得し、Rnw文書を取り扱うの
1494 をどのように使っているかを見てください)。その後、カスタマイズした
1502 (ヘルプ\SpecialChar menuseparator
1503 \SpecialCharNoPassThru LyX
1508 ディレクトリ下に置いてください。\SpecialCharNoPassThru LyX
1521 がユーザーディレクトリで検出されれば、それが使用されます。\SpecialCharNoPassThru LyX
1522 ライブラリディレクトリ下にあるスクリプトを直接ハックしてしまうと、\SpecialCharNoPassThru LyX
1524 トが上書きされてしまいます(ユーザーディレクトリは影響を受けません)ので、お勧めしません。
1527 \begin_layout Standard
1528 なお、Rの公式Sweaveの他に、Sweaveの代替ツールである
1532 パッケージもサポートされており、対応するモジュール名は