]> git.lyx.org Git - lyx.git/blob - lib/examples/ja/sweave.lyx
Distribute beamer manual changes in the wake of the environment-split mods.
[lyx.git] / lib / examples / ja / sweave.lyx
1 #LyX 2.3 created this file. For more info see http://www.lyx.org/
2 \lyxformat 544
3 \begin_document
4 \begin_header
5 \save_transient_properties true
6 \origin /systemlyxdir/examples/ja/
7 \textclass jarticle
8 \begin_preamble
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)
11 \def\maxwidth{%
12 \ifdim\Gin@nat@width>\linewidth
13 \linewidth
14 \else
15 \Gin@nat@width
16 \fi
17 }
18 \end_preamble
19 \options nogin
20 \use_default_options true
21 \begin_modules
22 sweave
23 \end_modules
24 \maintain_unincluded_children false
25 \language japanese
26 \language_package none
27 \inputencoding utf8-platex
28 \fontencoding global
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
35 \font_sc false
36 \font_osf false
37 \font_sf_scale 100 100
38 \font_tt_scale 100 100
39 \use_microtype false
40 \use_dash_ligatures false
41 \graphics default
42 \default_output_format default
43 \output_sync 0
44 \bibtex_command default
45 \index_command default
46 \paperfontsize default
47 \spacing single
48 \use_hyperref false
49 \papersize default
50 \use_geometry true
51 \use_package amsmath 1
52 \use_package amssymb 1
53 \use_package cancel 1
54 \use_package esint 1
55 \use_package mathdots 1
56 \use_package mathtools 1
57 \use_package mhchem 1
58 \use_package stackrel 1
59 \use_package stmaryrd 1
60 \use_package undertilde 1
61 \cite_engine basic
62 \cite_engine_type default
63 \biblio_style plain
64 \use_bibtopic false
65 \use_indices false
66 \paperorientation portrait
67 \suppress_date false
68 \justification true
69 \use_refstyle 0
70 \use_minted 0
71 \index Index
72 \shortcut idx
73 \color #008000
74 \end_index
75 \leftmargin 3cm
76 \topmargin 3cm
77 \rightmargin 3cm
78 \bottommargin 3cm
79 \secnumdepth 3
80 \tocdepth 3
81 \paragraph_separation indent
82 \paragraph_indentation default
83 \is_math_indent 0
84 \math_numbering_side default
85 \quotes_style english
86 \dynamic_quotes 0
87 \papercolumns 1
88 \papersides 1
89 \paperpagestyle default
90 \tracking_changes false
91 \output_changes false
92 \html_math_output 0
93 \html_css_as_file 0
94 \html_be_strict false
95 \end_header
96
97 \begin_body
98
99 \begin_layout Standard
100 \begin_inset ERT
101 status open
102
103 \begin_layout Plain Layout
104
105 %
106 \backslash
107 SweaveOpts{prefix=TRUE,prefix.string=sweave-prefix,keep.source=FALSE}
108 \end_layout
109
110 \end_inset
111
112
113 \end_layout
114
115 \begin_layout Standard
116 \begin_inset ERT
117 status open
118
119 \begin_layout Plain Layout
120
121 %% 
122 \backslash
123 maxwidth はプリアンブル中で定義されています。文書設定をご覧ください。
124 \end_layout
125
126 \begin_layout Plain Layout
127
128
129 \backslash
130 setkeys{Gin}{width=
131 \backslash
132 maxwidth}
133 \end_layout
134
135 \end_inset
136
137
138 \end_layout
139
140 \begin_layout Title
141 \SpecialChar LyX
142 でSweaveを使うには
143 \end_layout
144
145 \begin_layout Author
146 Yihui Xie
147 \begin_inset Foot
148 status collapsed
149
150 \begin_layout Plain Layout
151 アイオワ州立大学統計学部、電子メール: 
152 \begin_inset CommandInset href
153 LatexCommand href
154 name "xie@yihui.name"
155 target "xie@yihui.name"
156 type "mailto:"
157 literal "false"
158
159 \end_inset
160
161
162 \end_layout
163
164 \end_inset
165
166  
167 \begin_inset ERT
168 status collapsed
169
170 \begin_layout Plain Layout
171
172
173 \backslash
174 and
175 \end_layout
176
177 \end_inset
178
179  Gregor Gorjanc 
180 \begin_inset ERT
181 status collapsed
182
183 \begin_layout Plain Layout
184
185
186 \backslash
187 and
188 \end_layout
189
190 \end_inset
191
192  Jean-Marc Lasgouttes
193 \end_layout
194
195 \begin_layout Standard
196 Sweaveは、文芸的プログラミングの考えに従った、動的なレポート生成するための、R言語(
197 \begin_inset Flex URL
198 status collapsed
199
200 \begin_layout Plain Layout
201
202 http://www.r-project.org
203 \end_layout
204
205 \end_inset
206
207 )ツールです。Rコードは、\SpecialChar LaTeX
208 文書の中で混用することができ、文書がコンパイルされるときにRで実行されます。結果は、\SpecialChar TeX
209 出力内に書きこまれます。
210 \end_layout
211
212 \begin_layout Standard
213 \SpecialChar LyX
214  2.0以降では、
215 \family sans
216 Sweave
217 \family default
218 モジュールを使えば、どの文書クラスでもSweaveをそのまま使うことができます。
219 \family sans
220 Sweave
221 \family default
222 モジュールを文書に加えるには、
223 \family sans
224 文書\SpecialChar menuseparator
225 設定\SpecialChar menuseparator
226 モジュール
227 \family default
228 を使用します。この説明書では、Sweaveでよく使われる機能をいくつか紹介し、本モジュールがどう動作するかを説明します。この説明書のPDF版は、
229 \begin_inset Flex URL
230 status collapsed
231
232 \begin_layout Plain Layout
233
234 https://github.com/downloads/yihui/lyx/sweave.pdf
235 \end_layout
236
237 \end_inset
238
239 にあります。
240 \end_layout
241
242 \begin_layout Section
243 システム要件
244 \end_layout
245
246 \begin_layout Standard
247
248 \family sans
249 Sweave
250 \family default
251 モジュールは、実行ファイル
252 \family typewriter
253 Rscript
254 \family default
255 に依存しますので、このファイルが、システムの
256 \family sans
257 PATH
258 \family default
259 変数に含まれるパスになくてはなりません。これは、LinuxやMac OSユーザーには大した問題とならないでしょうが、Windowsユーザーには混乱を招くかもしれ
260 ません。Windowsにおける
261 \family sans
262 PATH
263 \family default
264 が何かわからない場合には、R言語のリポジトリ
265 \begin_inset Flex URL
266 status collapsed
267
268 \begin_layout Plain Layout
269
270 https://github.com/yihui/lyx
271 \end_layout
272
273 \end_inset
274
275 にあるRスクリプト
276 \family sans
277 add-R-path-win.R
278 \family default
279 を使って、パスを自動的に変更するか(推奨はできません。何にせよ
280 \family sans
281 PATH
282 \family default
283 が何かくらいは勉強すべきです)、あるいは
284 \family sans
285 ツール\SpecialChar menuseparator
286 設定\SpecialChar menuseparator
287 パス\SpecialChar menuseparator
288 パス接頭辞
289 \family default
290 からRのバイナリパスを追加することができます(推奨)。後者の場合、大抵
291 \family sans
292 C:
293 \backslash
294 Program Files
295 \backslash
296 R
297 \backslash
298 R-x.x.x
299 \backslash
300 bin
301 \family default
302 のような形をしており、R内で下記のようにして確認することができます。
303 \end_layout
304
305 \begin_layout Standard
306 \begin_inset ERT
307 status open
308
309 \begin_layout Plain Layout
310
311 <<where-is-R-bin,eval=FALSE>>=
312 \end_layout
313
314 \begin_layout Plain Layout
315
316 R.home('bin')
317 \end_layout
318
319 \begin_layout Plain Layout
320
321 @
322 \end_layout
323
324 \end_inset
325
326
327 \end_layout
328
329 \begin_layout Standard
330 これらの変更を加えた後、
331 \family sans
332 ツール\SpecialChar menuseparator
333 再初期設定
334 \family default
335 を使って、\SpecialChar LyX
336 の再設定を行う必要があります。
337 \family typewriter
338 Rscript
339 \family default
340
341 \family sans
342 PATH
343 \family default
344 にない場合、
345 \family sans
346 Sweave
347 \family default
348 モジュールを使うことはできません。Sweaveの更新は続いていますので、最新版のRを使用することをお勧めします。Rに同梱され、このパス下にある(CTANにはあり
349 ません)\SpecialChar LaTeX
350 スタイルファイル
351 \family sans
352 Sweave.sty
353 \family default
354 によって、下記のように依存関係が追加されます。
355 \end_layout
356
357 \begin_layout Standard
358 \begin_inset ERT
359 status open
360
361 \begin_layout Plain Layout
362
363 <<sweave-sty,eval=FALSE>>=
364 \end_layout
365
366 \begin_layout Plain Layout
367
368 file.path(R.home('share'), 'texmf', 'tex', 'latex')
369 \end_layout
370
371 \begin_layout Plain Layout
372
373 @
374 \end_layout
375
376 \end_inset
377
378
379 \end_layout
380
381 \begin_layout Standard
382 Mik\SpecialChar TeX
383 ユーザーは、Mik\SpecialChar TeX
384 の設定で、Mik\SpecialChar TeX
385 のルートディレクトリ一覧にtexmfディレクトリも追加したほうが良いかもしれません。また、
386 \family sans
387 Sweave.sty
388 \family default
389
390 \series bold
391 fancyvrb
392 \series default
393 パッケージに依存しており、
394 \series bold
395 ae
396 \series default
397 に依存する
398 \emph on
399 ことも
400 \emph default
401 あります。\SpecialChar LyX
402
403 \family sans
404 Sweave.sty
405 \family default
406 を検出できないときは、直接Rからコピーしますので、このスタイルファイルがどこにあるかわからない場合でも、Sweaveモジュールは動作します。
407 \end_layout
408
409 \begin_layout Section
410 Sweaveの用例
411 \end_layout
412
413 \begin_layout Standard
414 Sweave文書を書く前に、Sweaveオプションを設定しましょう。Sweaveの設定コマンドは
415 \family typewriter
416
417 \backslash
418 SweaveOpts{}
419 \family default
420 ですが、これは、\SpecialChar LyX
421 文書中で、
422 \family sans
423 挿入\SpecialChar menuseparator
424 任意設定差込枠\SpecialChar menuseparator
425 Sweaveオプション
426 \family default
427 か、\SpecialChar TeX
428 コードで書く(
429 \family sans
430 挿入\SpecialChar menuseparator
431 \SpecialChar TeX
432 コード
433 \family default
434 )ことで挿入することができます。例えば、文頭で大域オプション
435 \family typewriter
436 echo=FALSE
437 \family default
438 を設定して、すべてのRコードを抑制することもできます(既定では、Rコードとその出力は、両方とも\SpecialChar LaTeX
439 文書中に表示されます)。
440 \end_layout
441
442 \begin_layout Standard
443 \SpecialChar LyX
444 でRコードを書くには、まずレイアウト様式一覧(ツールバーの左上端のドロップリスト)から、
445 \family sans
446 コード組
447 \family default
448 環境に変更するか、あるいは、単に\SpecialChar TeX
449 コード環境を開いて、Sweaveのコード組を書き込んでください。後者の方法の方が安定していますので、そちらをお勧めします。
450 \end_layout
451
452 \begin_layout Standard
453 例えば
454 \family typewriter
455 width
456 \family default
457
458 \family typewriter
459 useFancyQuotes
460 \family default
461 のようなRオプションもSweaveの出力に便利です。前者のオプションは、出力の幅を調整するものであり、後者は引用符に関してよく起こる問題を回避することができます
462 。詳細については、Rに添付のSweave取扱説明書をお読みください。
463 \end_layout
464
465 \begin_layout Standard
466 \begin_inset ERT
467 status open
468
469 \begin_layout Plain Layout
470
471 <<setup, keep.source=TRUE>>=
472 \end_layout
473
474 \begin_layout Plain Layout
475
476 ## オプション「digits」は桁数(の概数)を設定できます
477 \end_layout
478
479 \begin_layout Plain Layout
480
481 options(width = 70, useFancyQuotes = FALSE, digits = 4)
482 \end_layout
483
484 \begin_layout Plain Layout
485
486 @
487 \end_layout
488
489 \begin_layout Plain Layout
490
491 <<sweave-manual, eval=FALSE, keep.source=TRUE>>=
492 \end_layout
493
494 \begin_layout Plain Layout
495
496 ## Sweaveのvignetteを見る (要 R >= 2.13.0)
497 \end_layout
498
499 \begin_layout Plain Layout
500
501 vignette("Sweave", package = "utils")
502 \end_layout
503
504 \begin_layout Plain Layout
505
506 @
507 \end_layout
508
509 \end_inset
510
511
512 \end_layout
513
514 \begin_layout Standard
515 下記は、どのSエンジンでも動作する単純な例です。
516 \end_layout
517
518 \begin_layout Standard
519 \begin_inset ERT
520 status open
521
522 \begin_layout Plain Layout
523
524 <<print-integers, keep.source=TRUE>>=
525 \end_layout
526
527 \begin_layout Plain Layout
528
529 ## 1から10までの整数は
530 \end_layout
531
532 \begin_layout Plain Layout
533
534 1:10 
535 \end_layout
536
537 \begin_layout Plain Layout
538
539 @
540 \end_layout
541
542 \begin_layout Plain Layout
543
544 <<hide-results, results=hide>>=
545 \end_layout
546
547 \begin_layout Plain Layout
548
549 ## results=hide を設定して意図的に出力を隠す
550 \end_layout
551
552 \begin_layout Plain Layout
553
554 print(1:20)
555 \end_layout
556
557 \begin_layout Plain Layout
558
559 @
560 \end_layout
561
562 \end_inset
563
564
565 \end_layout
566
567 \begin_layout Standard
568 単純な計算機をエミュレートすることもできます。
569 \end_layout
570
571 \begin_layout Standard
572 \begin_inset ERT
573 status open
574
575 \begin_layout Plain Layout
576
577 <<calculator>>=
578 \end_layout
579
580 \begin_layout Plain Layout
581
582 1 + pi
583 \end_layout
584
585 \begin_layout Plain Layout
586
587 sin(pi/6)
588 \end_layout
589
590 \begin_layout Plain Layout
591
592 @
593 \end_layout
594
595 \end_inset
596
597
598 \end_layout
599
600 \begin_layout Standard
601 今度は、ガウシアンデータを見てみましょう。
602 \end_layout
603
604 \begin_layout Standard
605 \begin_inset ERT
606 status open
607
608 \begin_layout Plain Layout
609
610 <<rnorm>>=
611 \end_layout
612
613 \begin_layout Plain Layout
614
615 set.seed(123)  # 再現可能性のため
616 \end_layout
617
618 \begin_layout Plain Layout
619
620 x <- rnorm(20)
621 \end_layout
622
623 \begin_layout Plain Layout
624
625 print(x)
626 \end_layout
627
628 \begin_layout Plain Layout
629
630 t1 <- t.test(x)
631 \end_layout
632
633 \begin_layout Plain Layout
634
635 @
636 \end_layout
637
638 \end_inset
639
640
641 \end_layout
642
643 \begin_layout Standard
644 数値を標準テキストに簡単に統合させることができます。これは、
645 \family typewriter
646
647 \backslash
648 Sexpr{}
649 \family default
650 コマンドによって行われ、\SpecialChar LyX
651 中の対応するメニューは
652 \family sans
653 挿入\SpecialChar menuseparator
654 任意設定差込枠\SpecialChar menuseparator
655 S/R表現
656 \family default
657 ですが、\SpecialChar TeX
658 コードを使うこともできます。例えば、ベクトル
659 \family typewriter
660 x
661 \family default
662 の第3要素は、
663 \begin_inset Flex S/R expression
664 status collapsed
665
666 \begin_layout Plain Layout
667
668 x[3]
669 \end_layout
670
671 \end_inset
672
673  (すなわち
674 \family typewriter
675 x[3]
676 \family default
677 )であり、検定の
678 \begin_inset Formula $p$
679 \end_inset
680
681 値は
682 \begin_inset Flex S/R expression
683 status collapsed
684
685 \begin_layout Plain Layout
686
687 format.pval(t1$p.value)
688 \end_layout
689
690 \end_inset
691
692 です。これらの数値は、R中で
693 \emph on
694 round()
695 \emph default
696 のようなコマンドを使うことによって丸めることもできます。
697 \end_layout
698
699 \begin_layout Standard
700
701 \family roman
702 \series medium
703 \shape up
704 \size normal
705 \emph off
706 \bar no
707 \noun off
708 \color none
709 今度は、
710 \family typewriter
711 \series default
712 \shape default
713 \size default
714 \emph default
715 \bar default
716 \noun default
717 \color inherit
718 iris
719 \family roman
720 \series medium
721 \shape up
722 \size normal
723 \emph off
724 \bar no
725 \noun off
726 \color none
727 データセットの要約を見てみましょう。
728 \end_layout
729
730 \begin_layout Standard
731 \begin_inset ERT
732 status open
733
734 \begin_layout Plain Layout
735
736 <<iris-summary>>=
737 \end_layout
738
739 \begin_layout Plain Layout
740
741 summary(iris[,-5])
742 \end_layout
743
744 \begin_layout Plain Layout
745
746 @
747 \end_layout
748
749 \end_inset
750
751
752 \end_layout
753
754 \begin_layout Standard
755 \begin_inset Float table
756 wide false
757 sideways false
758 status open
759
760 \begin_layout Plain Layout
761 \begin_inset Caption Standard
762
763 \begin_layout Plain Layout
764
765 \family typewriter
766 iris
767 \family default
768 データの最初の4変数の分位数
769 \begin_inset CommandInset label
770 LatexCommand label
771 name "tab:xtable-demo"
772
773 \end_inset
774
775
776 \end_layout
777
778 \end_inset
779
780
781 \end_layout
782
783 \begin_layout Plain Layout
784 \align center
785 \begin_inset ERT
786 status open
787
788 \begin_layout Plain Layout
789
790 \end_layout
791
792 \begin_layout Plain Layout
793
794 <<xtable-demo,results=tex,echo=FALSE>>=
795 \end_layout
796
797 \begin_layout Plain Layout
798
799 if (require('xtable')) {
800 \end_layout
801
802 \begin_layout Plain Layout
803
804 print(xtable(sapply(iris[,-5], quantile)), floating=FALSE)
805 \end_layout
806
807 \begin_layout Plain Layout
808
809 } else cat('the xtable package is not available! please install.packages("xtable"
810 )')
811 \end_layout
812
813 \begin_layout Plain Layout
814
815 @
816 \end_layout
817
818 \end_inset
819
820
821 \end_layout
822
823 \end_inset
824
825
826 \end_layout
827
828 \begin_layout Standard
829 通常、人々はこのような「生の」出力を好みませんので、これらのごちゃごちゃした数字を、
830 \series bold
831 xtable
832 \series default
833 パッケージを使って綺麗にしてやるといいでしょう。表
834 \begin_inset CommandInset ref
835 LatexCommand ref
836 reference "tab:xtable-demo"
837
838 \end_inset
839
840 は、Sweaveでの
841 \series bold
842 xtable
843 \series default
844 パッケージの使い方を示すための例です。コード組のオプション
845 \family typewriter
846 results=tex
847 \family default
848 は、R出力が、特別な環境(
849 \family typewriter
850 Soutput
851 \family default
852 )で包まれるのではなく、生の\SpecialChar LaTeX
853 コードとして書き出されるように保証するためのものです。
854 \end_layout
855
856 \begin_layout Standard
857
858 \begin_inset CommandInset ref
859 LatexCommand ref
860 reference "fig:iris-pairs"
861
862 \end_inset
863
864 と図
865 \begin_inset CommandInset ref
866 LatexCommand ref
867 reference "fig:iris-boxplots"
868
869 \end_inset
870
871 は、Sweaveを使って画像を生成する簡単な例です。
872 \end_layout
873
874 \begin_layout Standard
875 \begin_inset Float figure
876 wide false
877 sideways false
878 status open
879
880 \begin_layout Plain Layout
881 \align center
882 \begin_inset Note Note
883 status open
884
885 \begin_layout Plain Layout
886 epsとpdfの両方をtrueにして、latexとpdflatexの両方を動作するようにすることができます。実際には、おそらく一つを選ぶだけでよいでしょう。
887 \end_layout
888
889 \end_inset
890
891
892 \begin_inset ERT
893 status open
894
895 \begin_layout Plain Layout
896
897 <<iris-pairs,fig=TRUE,width=4.5,height=4.5,eps=TRUE,pdf=TRUE>>=
898 \end_layout
899
900 \begin_layout Plain Layout
901
902 pairs(iris, col = iris$Species)
903 \end_layout
904
905 \begin_layout Plain Layout
906
907 @
908 \end_layout
909
910 \end_inset
911
912
913 \end_layout
914
915 \begin_layout Plain Layout
916 \begin_inset Caption Standard
917
918 \begin_layout Plain Layout
919
920 \family typewriter
921 iris
922 \family default
923 データの散布図マトリックス
924 \begin_inset CommandInset label
925 LatexCommand label
926 name "fig:iris-pairs"
927
928 \end_inset
929
930
931 \end_layout
932
933 \end_inset
934
935
936 \end_layout
937
938 \end_inset
939
940
941 \end_layout
942
943 \begin_layout Standard
944 \begin_inset Float figure
945 wide false
946 sideways false
947 status open
948
949 \begin_layout Plain Layout
950 \align center
951 \begin_inset ERT
952 status open
953
954 \begin_layout Plain Layout
955
956 <<iris-boxplots,fig=TRUE,width=7,height=2,keep.source=F,eps=T,pdf=T>>=
957 \end_layout
958
959 \begin_layout Plain Layout
960
961 par(mar=c(4,5,.1,.3), las=1)
962 \end_layout
963
964 \begin_layout Plain Layout
965
966 boxplot(Sepal.Length~Species,data=iris,horizontal=TRUE,xlab='Sepal.Length')
967 \end_layout
968
969 \begin_layout Plain Layout
970
971 @
972 \end_layout
973
974 \end_inset
975
976
977 \end_layout
978
979 \begin_layout Plain Layout
980 \begin_inset Caption Standard
981
982 \begin_layout Plain Layout
983 種でグループ化された萼片の長さのボックスプロット
984 \begin_inset CommandInset label
985 LatexCommand label
986 name "fig:iris-boxplots"
987
988 \end_inset
989
990
991 \end_layout
992
993 \end_inset
994
995
996 \end_layout
997
998 \end_inset
999
1000
1001 \end_layout
1002
1003 \begin_layout Standard
1004 Sweave文書中のRコードは、単一のRスクリプトとして書きだすことができますが、これは
1005 \family typewriter
1006 R CMD Stangle
1007 \family default
1008 を使って行われます。
1009 \end_layout
1010
1011 \begin_layout Section
1012
1013 \family sans
1014 Sweave
1015 \family default
1016 モジュール
1017 \end_layout
1018
1019 \begin_layout Standard
1020
1021 \family sans
1022 Sweave
1023 \family default
1024 モジュールは、\SpecialChar LyX
1025 文書が、Rを使った文芸的プログラミングのコンポーネントを含んでいることを宣言しますので、\SpecialChar LyX
1026 は、そのような文書を取り扱う特定の変換子を使って処理します
1027 (取扱説明書カスタマイズ篇参照)。
1028 \family sans
1029 Sweave
1030 \family default
1031 モジュールは、
1032 \family sans
1033 sweave
1034 \family default
1035 変換子を使用しますが、これは、\SpecialChar LyX
1036
1037 \family sans
1038 scripts
1039 \family default
1040 ディレクトリ下にあるRスクリプト
1041 \family sans
1042 lyxsweave.R
1043 \family default
1044 が本体になっています。このスクリプトは、\SpecialChar LyX
1045 から
1046 \family sans
1047 Rnw
1048 \family default
1049 文書を受け取り、これを\SpecialChar TeX
1050 文書に変換するためにSweaveを呼び出します。その後の作業は、\SpecialChar LyX
1051 が面倒を見ます。
1052 \end_layout
1053
1054 \begin_layout Standard
1055
1056 \family sans
1057 sweave
1058 \family default
1059 形式から\SpecialChar LaTeX
1060 への変換子は、下記のコマンド行でRを呼び出します。
1061 \end_layout
1062
1063 \begin_layout Standard
1064 \begin_inset ERT
1065 status open
1066
1067 \begin_layout Plain Layout
1068
1069
1070 \backslash
1071 begin{verbatim}
1072 \end_layout
1073
1074 \begin_layout Plain Layout
1075
1076 Rscript --no-save --no-restore $$s/scripts/lyxsweave.R $$p$$i $$p$$o $$e
1077  $$r
1078 \end_layout
1079
1080 \begin_layout Plain Layout
1081
1082
1083 \backslash
1084 end{verbatim}
1085 \end_layout
1086
1087 \end_inset
1088
1089
1090 \end_layout
1091
1092 \begin_layout Standard
1093 \SpecialChar LyX
1094 ライブラリディレクトリ
1095 \family typewriter
1096 $$s
1097 \family default
1098 は、
1099 \family sans
1100 ヘルプ\SpecialChar menuseparator
1101 \SpecialChar LyX
1102 について
1103 \family default
1104 メニューに記載があります。他にRに渡すことのできるオプションは、Rスクリプト中で説明されており、また、\SpecialChar LyX
1105 取扱説明書カスタマイズ篇には、
1106 \family typewriter
1107 $$i
1108 \family default
1109
1110 \family typewriter
1111 $$o
1112 \family default
1113
1114 \family typewriter
1115 $$e
1116 \family default
1117
1118 \family typewriter
1119 $$r
1120 \family default
1121 についての詳しい説明があります。一般ユーザーは、これらの意味について詳しく知る必要はありませんが、ここでは、Rコードにまつわる若干の問題について説明しておく必要
1122 があります。
1123 \end_layout
1124
1125 \begin_layout Enumerate
1126 \SpecialChar LyX
1127 文書のエンコーディングを表す文字列は、Rにコマンドラインオプションとして渡されます。取り得る値は、
1128 \family typewriter
1129 ISO-8859-15
1130 \family default
1131
1132 \family typewriter
1133 UTF-8
1134 \family default
1135 などです。エンコーディングは、Rが
1136 \family sans
1137 Rnw
1138 \family default
1139 文書を正しく読むのに使用されます。
1140 \end_layout
1141
1142 \begin_layout Enumerate
1143 Sweave文書内のRコード組は、\SpecialChar LyX
1144 文書のあるディレクトリで実行されます(自信のない場合は、現在の作業ディレクトリがどこかを見るために、コード組に
1145 \family typewriter
1146 getwd()
1147 \family default
1148 を置いてください)。この場合、データファイルは同じディレクトリ下に置くことができ、再現可能性を保証するために、R内部では相対パスを使用してください。すなわち、他
1149 のシステムでは存在しないかもしれない、ハードコードのパスを書く必要はありません。
1150 \end_layout
1151
1152 \begin_layout Enumerate
1153 \SpecialChar LaTeX
1154
1155 \family sans
1156 Sweave.sty
1157 \family default
1158 を検出できないと、このRスクリプトが自動的に
1159 \family sans
1160 Sweave.sty
1161 \family default
1162 を一時ディレクトリにコピーし、そこで\SpecialChar LaTeX
1163 コンパイルを実行します。
1164 \end_layout
1165
1166 \begin_layout Enumerate
1167 Sweaveは、既定でRnwファイルのファイル名を、画像出力の接頭辞文字列として使用します。既知の問題の1つ(
1168 \begin_inset CommandInset href
1169 LatexCommand href
1170 name "#7551"
1171 target "https://www.lyx.org/trac/ticket/7551"
1172 literal "false"
1173
1174 \end_inset
1175
1176 )として、ファイル名(拡張子を除く)にピリオドが含まれている場合、\SpecialChar LaTeX
1177 がそのファイルを
1178 \family typewriter
1179
1180 \backslash
1181 includegraphics{}
1182 \family default
1183 で処理する際に失敗しうるということが知られています。したがって、接頭辞の既定値は、すべてのピリオドを「-」で置換したファイル名にしてあります。この問題は、Swe
1184 aveで直接的に解決することもができます。Sweaveオプションの
1185 \family typewriter
1186 prefix.string
1187 \family default
1188 を、ピリオドを含まない文字列に設定すると、このオプションが既定値を上書きします。
1189 \end_layout
1190
1191 \begin_layout Standard
1192 Sweaveパッケージには、事前に
1193 \family typewriter
1194 noae
1195 \family default
1196 オプションが設定されています。このオプションは、Sweaveが下記の2つのパッケージを読み込んでしまうのを防ぎます。
1197 \end_layout
1198
1199 \begin_layout Standard
1200 \begin_inset ERT
1201 status open
1202
1203 \begin_layout Plain Layout
1204
1205
1206 \backslash
1207 begin{verbatim}
1208 \end_layout
1209
1210 \begin_layout Plain Layout
1211
1212
1213 \backslash
1214 RequirePackage[T1]{fontenc}  
1215 \end_layout
1216
1217 \begin_layout Plain Layout
1218
1219
1220 \backslash
1221 RequirePackage{ae}
1222 \end_layout
1223
1224 \begin_layout Plain Layout
1225
1226
1227 \backslash
1228 end{verbatim}
1229 \end_layout
1230
1231 \end_inset
1232
1233
1234 \end_layout
1235
1236 \begin_layout Standard
1237 \SpecialChar LyX
1238 は、既定でフォントエンコーディングを取り扱うことができるので、Sweaveにこれをやってもらう必要はないのです(その上、これはパッケージオプションの衝突をもたら
1239 す可能性があります)。一方、ユーザーは、必要ならばプリアンブルで
1240 \series bold
1241 ae
1242 \series default
1243 パッケージを手動で読み込ませることができます。
1244 \end_layout
1245
1246 \begin_layout Section
1247 問題の解決法
1248 \end_layout
1249
1250 \begin_layout Standard
1251 \SpecialChar LyX
1252  2.0以降、コンパイル中の詳細な情報を、
1253 \family sans
1254 表示\SpecialChar menuseparator
1255 メッセージを表示
1256 \family default
1257 で見ることができるようになりました。これは、問題の解決に非常に役に立ちます。Rの処理は、メッセージパネルに表示され、エラーが発生した場合には、どのコード組がおか
1258 しいのか知ることができます。例えば、この文書をコンパイルする時、以下のようなメッセージを見ることができるでしょう。
1259 \end_layout
1260
1261 \begin_layout Standard
1262 \begin_inset ERT
1263 status open
1264
1265 \begin_layout Plain Layout
1266
1267
1268 \backslash
1269 begin{verbatim}
1270 \end_layout
1271
1272 \begin_layout Plain Layout
1273
1274 17:58:47.868: Processing code chunks with options ...
1275 \end_layout
1276
1277 \begin_layout Plain Layout
1278
1279 17:58:47.885:  1 : echo keep.source term verbatim (label=setup)
1280 \end_layout
1281
1282 \begin_layout Plain Layout
1283
1284 17:58:47.889:  2 : echo keep.source (label=sweave-manual)
1285 \end_layout
1286
1287 \begin_layout Plain Layout
1288
1289 17:58:47.908:  3 : echo keep.source term verbatim (label=print-integers)
1290 \end_layout
1291
1292 \begin_layout Plain Layout
1293
1294 ....
1295 \end_layout
1296
1297 \begin_layout Plain Layout
1298
1299 17:58:47.941: Loading required package: xtable
1300 \end_layout
1301
1302 \begin_layout Plain Layout
1303
1304 17:58:47.976:  9 : echo term verbatim pdf (label=iris-pairs)
1305 \end_layout
1306
1307 \begin_layout Plain Layout
1308
1309 ....
1310 \end_layout
1311
1312 \begin_layout Plain Layout
1313
1314 17:58:48.116: You can now run (pdf)latex on 'sweave.tex'
1315 \end_layout
1316
1317 \begin_layout Plain Layout
1318
1319
1320 \backslash
1321 end{verbatim}
1322 \end_layout
1323
1324 \end_inset
1325
1326
1327 \end_layout
1328
1329 \begin_layout Standard
1330
1331 \family typewriter
1332 label=
1333 \family default
1334 の後の文字列が、コード組のラベルを示します。コード組のどれかがRでエラーを起こせば、即座にここにエラーメッセージを見ることができます。
1335 \end_layout
1336
1337 \begin_layout Standard
1338 もうひとつ知られている問題点は、\SpecialChar LyX
1339 中でコード組段落の配置に(
1340 \family sans
1341 段落設定
1342 \family default
1343 を使用して)手を加えた場合、\SpecialChar LyX
1344 は、改行しないでコード組の前に
1345 \family typewriter
1346
1347 \backslash
1348 centering{}
1349 \family default
1350 のようなマクロを書き加えてしまうことがあるので、Sweaveコード組がエラーを起こす場合があるという事です。この場合のコード組は、下記のようになってしまいます。
1351 \end_layout
1352
1353 \begin_layout Standard
1354 \begin_inset ERT
1355 status open
1356
1357 \begin_layout Plain Layout
1358
1359
1360 \backslash
1361 begin{verbatim}
1362 \end_layout
1363
1364 \begin_layout Plain Layout
1365
1366
1367 \backslash
1368 centering{}<<xtable-demo,results=tex,echo=FALSE>>=
1369 \end_layout
1370
1371 \begin_layout Plain Layout
1372
1373
1374 \backslash
1375 end{verbatim}
1376 \end_layout
1377
1378 \end_inset
1379
1380
1381 \end_layout
1382
1383 \begin_layout Standard
1384
1385 \family typewriter
1386 <<>>=
1387 \family default
1388 は行頭すぐに置かれなくてはならないため、これは正しいSweaveコードではありません。したがって、コード組段落の配置に手を加える場合には、
1389 \family sans
1390 表示\SpecialChar menuseparator
1391 ソースを表示
1392 \family default
1393 で、実際のソースコードを再確認し、
1394 \family typewriter
1395 <<>>=
1396 \family default
1397 が改行後に現れるようにすることをお勧めします。表
1398 \begin_inset CommandInset ref
1399 LatexCommand ref
1400 reference "tab:xtable-demo"
1401
1402 \end_inset
1403
1404 のコード組に手動で空行が追加されているのは、このためです。
1405 \end_layout
1406
1407 \begin_layout Section
1408 リソース
1409 \end_layout
1410
1411 \begin_layout Standard
1412 The user manual of Sweave is at 
1413 \begin_inset Flex URL
1414 status collapsed
1415
1416 \begin_layout Plain Layout
1417
1418 https://stat.ethz.ch/R-manual/R-devel/library/utils/doc/Sweave.pdf
1419 \end_layout
1420
1421 \end_inset
1422
1423 にあります。 The CRAN task view on 「Reproducible Research」にあるCRANタスクビューには、便利と思われるSweav
1424 e関連パッケージの一覧があります。
1425 \begin_inset Flex URL
1426 status collapsed
1427
1428 \begin_layout Plain Layout
1429
1430 http://cran.r-project.org/web/views/ReproducibleResearch.html
1431 \end_layout
1432
1433 \end_inset
1434
1435 をご覧ください。\SpecialChar LyX
1436 とSweaveに関する質問は、\SpecialChar LyX
1437 メーリングリスト(
1438 \begin_inset Flex URL
1439 status collapsed
1440
1441 \begin_layout Plain Layout
1442
1443 https://www.lyx.org/MailingLists
1444 \end_layout
1445
1446 \end_inset
1447
1448 )に投稿してください。さらに多くの\SpecialChar LyX
1449 の用例は、
1450 \begin_inset Flex URL
1451 status collapsed
1452
1453 \begin_layout Plain Layout
1454
1455 https://github.com/yihui/lyx
1456 \end_layout
1457
1458 \end_inset
1459
1460 にあります。
1461 \end_layout
1462
1463 \begin_layout Section
1464 FAQ
1465 \end_layout
1466
1467 \begin_layout Subsection
1468 Sweaveをbeamerで使うにはどうすればよいでしょうか
1469 \end_layout
1470
1471 \begin_layout Standard
1472 beamerのスライドでSweaveを使うと、\SpecialChar LyX
1473 では\SpecialChar LaTeX
1474 エラーが発生します。その原因は、生のRコードを含むbeamerフレームのせいです。これを解決するには、通常のフ
1475 レームの代わりに脆弱フレームを使うか、フレーム表題に
1476 \family sans
1477 挿入\SpecialChar menuseparator
1478 フレームオプション
1479 \family default
1480 を使って、
1481 \family typewriter
1482 fragile
1483 \family default
1484 オプションを渡します。
1485 \end_layout
1486
1487 \begin_layout Subsection
1488 Rnw文書をコンパイルするためのRスクリプトを書いてもいいですか
1489 \end_layout
1490
1491 \begin_layout Standard
1492 もちろんです。まず、前述のRスクリプト
1493 \family typewriter
1494 $$s
1495 \family sans
1496 /scripts/lyxsweave.R
1497 \family default
1498 がどのように動作するかを理解する必要がありますので、できればそのRソースコードを読むことをお勧めします(特に、Rがパスをどのように取得し、Rnw文書を取り扱うの
1499
1500 \emph on
1501 Sweave()
1502 \emph default
1503 をどのように使っているかを見てください)。その後、カスタマイズした
1504 \family sans
1505 lyxsweave.R
1506 \family default
1507 をあなたの
1508 \emph on
1509 ユーザーディレクトリ
1510 \emph default
1511 (ヘルプ\SpecialChar menuseparator
1512 \SpecialChar LyX
1513 についてでチェックできます)の
1514 \family sans
1515 scripts
1516 \family default
1517 ディレクトリ下に置いてください。\SpecialChar LyX
1518 は自身の
1519 \emph on
1520 ライブラリディレクトリ
1521 \emph default
1522 を見に行く前に
1523 \emph on
1524 ユーザーディレクトリ
1525 \emph default
1526 をチェックしますので、Rスクリプト
1527 \family sans
1528 lyxsweave.R
1529 \family default
1530 がユーザーディレクトリで検出されれば、それが使用されます。\SpecialChar LyX
1531 ライブラリディレクトリ下にあるスクリプトを直接ハックしてしまうと、\SpecialChar LyX
1532 更新時に修正したスクリプトが上書きさ
1533 れてしまいます(ユーザーディレクトリは影響を受けません)ので、お勧めしません。
1534 \end_layout
1535
1536 \begin_layout Standard
1537 なお、Rの公式Sweaveの他に、Sweaveの代替ツールである
1538 \series bold
1539 knitr
1540 \series default
1541 パッケージもサポートされており、対応するモジュール名は
1542 \family sans
1543 Rnw (knitr)
1544 \family default
1545 となっています。
1546 \end_layout
1547
1548 \end_body
1549 \end_document